콘텐츠로 이동

이벤트 관리

Hive 채팅 기능은 앱 클라이언트로 아래 3가지 유형 이벤트를 전달합니다.

  • 연결 이벤트
  • 채널 이벤트
  • 1:1 메시지 이벤트

사용자 정의 키와 함께 이벤트 리스너를 등록하면 이벤트를 수신할 수 있습니다.

연결 이벤트

연결 이벤트는 Hive 채팅 소켓 서버 연결과 관련한 이벤트입니다.

연결 이벤트 유형

이벤트명 발생 시기 설명
OnConnected 연결 성공 시 연결 성공 시 발생합니다.
OnDisconnected 연결 실패 시 연결 실패 시 발생합니다.
using hive;

ConnectionHandler connectionHandler = new ConnectionHandler
{
    OnConnected = () =>
    {
        // on connected
    },
    OnDisconnected = () =>
    {
        // on disconnected
    }
};
Chat.addConnectionHandler("UNIQUE_KEY", connectionHandler);
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;

class ConnectionListenerImpl : public ConnectionListener {
    void onConnected() override {
        // on connected
    }

    void onDisconnected() override {
        // on disconnected
    }
};

Chat::addConnectionListener("UNIQUE_KEY", new ConnectionListenerImpl());
import com.hive.Chat;

Chat.addConnectionListener("UNIQUE_KEY", object : ConnectionListener{
    override fun onConnected() {
        // on connected
    }

    override fun onDisconnected() {
        // on disconnected
    }
})
import com.hive.Chat;

Chat.addConnectionListener("UNIQUE_KEY", new Chat.ConnectionListener() {
    @Override
    public void onConnected() {
        // on connected
    }

    @Override
    public void onDisconnected() {
        // on disconnected
    }
});
import HIVEService

class ChatConnectionListener: HiveChatConnectionDelegate {
    func onConnected() {
        // on connected
    }

    func onDisconnected() {
        // on disconnected
    }
}

ChatInterface.addConnectionListener(uniqueKey: "UNIQUE_KEY", listener: ChatConnectionListener())
#import "HIVEService.h"

@interface ChatConnectionListener : NSObject <HiveChatConnectionDelegate>
@end

@implementation ChatConnectionListener

- (void)onConnected {
    // on connected
}

- (void)onDisconnected {
    // on disconnected
}

@end

[ChatInterface addConnectionListenerWithUniqueKey:@"UNIQUE_KEY" listener:[[ChatConnectionListener alloc] init]];

채널 이벤트

채널 이벤트는 사용자와 채널 사이에서 발생하는 모든 이벤트를 전달합니다.

채널 이벤트 유형

이벤트명 발생 시기 설명
OnEnteredMember 멤버의 채널 참여 멤버가 채널에 참여 시 발생합니다. 채널 참여 시 참여한 멤버 정보를 포함한 객체(EnteredMember)를 전달합니다.
OnExitedMember 멤버의 채널 퇴장 멤버가 채널에서 퇴장 시 발생합니다. 채널 퇴장 시 퇴장한 멤버 정보를 포함한 객체(ExitedMember)를 전달합니다.
OnDeletedChannel 채널 삭제 채널 삭제 시 발생합니다. 삭제된 채널 정보를 포함한 객체(DeletedChannel)를 전달합니다.
OnNoticeMessage 공지 메시지 수신 공지 메시지 수신 시 발생합니다. 공지 메시지 정보를 포함한 객체(ChannelNoticeMessage)를 전달합니다.
OnChannelMessage 채널 메시지 수신 채널 메시지 수신 시 발생합니다. 채널 메시지 정보를 포함한 객체(ChannelMessage)를 전달합니다.

EnteredMember

필드명 설명 타입
channelId 이벤트가 발생한 채널 ID string
playerId 입장한 멤버의 PlayerID int
extraData 멤버 추가 정보 string
timestamp 이벤트 발생 시간 string

ExitedMember

필드명 설명 타입
channelId 이벤트가 발생한 채널 ID string
playerId 퇴장한 멤버의 PlayerID int
extraData 멤버 추가 정보 string
timestamp 이벤트 발생 시간 string

DeletedChannel

필드명 설명 타입
channelId 삭제된 채널 ID string
timestamp 이벤트 발생 시간 string

ChannelNoticeMessage

필드명 설명 타입
channelId 이벤트가 발생한 채널 ID string
from 공지 메시지 발신자 string
message 공지 메시지 string
timestamp 이벤트 발생 시간 string

ChannelMessage

필드명 설명 타입
channelId 이벤트가 발생한 채널 ID string
from 메시지 발신자 string
fromExtra 메시지 발신자 추가 정보 string
to 수신 채널 string
message 메시지 string
timestamp 이벤트 발생 시간 string
using hive;

ChannelHandler channelHandler = new ChannelHandler
{
    OnEnteredMember = (member) =>
    {
        // member entered
    },
    OnExitedMember = (member) =>
    {
        // member exited
    },
    OnDeletedChannel = (channel) =>
    {
        // channel deleted
    },
    OnNoticeMessage = (message) =>
    {
        // channel notice message received
    },
    OnChannelMessage = (message) =>
    {
        // channel message received
    }
};
Chat.addChannelHandler("UNIQUE_KEY", channelHandler);
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;

class ChannelListenerImpl : public ChannelListener {
    void onEnteredMember(EnteredMember const & member) override {
        // member entered
    }

    void onExitedMember(ExitedMember const & member) override {
        // member exited
    }

    void onDeletedChannel(DeletedChannel const & channel) override {
        // channel deleted
    }

    void onNoticeMessage(ChannelNoticeMessage const & message) override {
        // channel notice message received
    }

    void onChannelMessage(ChannelMessage const & message) override {
        // channel message received
    }
};

Chat::addChannelListener("UNIQUE_KEY", new ChannelListenerImpl());
import com.hive.Chat;

Chat.addChannelListener("UNIQUE_KEY", object: Chat.ChannelListener{
    override fun onEnteredMember(member: Chat.EnteredMember) {
        // member entered
    }

    override fun onExitedMember(member: Chat.ExitedMember) {
        // member exited
    }

    override fun onDeletedChannel(channel: Chat.DeletedChannel) {
        // channel deleted
    }

    override fun onNoticeMessage(message: Chat.ChannelNoticeMessage) {
        // channel notice message received
    }

    override fun onChannelMessage(message: Chat.ChannelMessage) {
        // channel message received
    }
})
import com.hive.Chat;

Chat.addChannelListener("UNIQUE_KEY", new Chat.ChannelListener(){
    @Override
    public void onEnteredMember(@NonNull Chat.EnteredMember member) {
        // member entered
    }

    @Override
    public void onExitedMember(@NonNull Chat.ExitedMember member) {
        // member exited
    }

    @Override
    public void onDeletedChannel(@NonNull Chat.DeletedChannel channel) {
        // channel deleted
    }

    @Override
    public void onNoticeMessage(@NonNull Chat.ChannelNoticeMessage message) {
        // channel notice message received
    }

    @Override
    public void onChannelMessage(@NonNull Chat.ChannelMessage message) {
        // channel message received
    }
});
import HIVEService

class ChatChannelListener: HiveChatChannelMessageDelegate {
    func onEnteredMember(_ member: Chat.EnteredMember) {
        // member entered
    }

    func onExitedMember(_ member: Chat.ExitedMember) {
        // member exited
    }

    func onDeletedChannel(_ channel: Chat.DeletedChannel) {
        // channel deleted
    }

    func onNoticeMessage(_ message: Chat.ChannelNoticeMessage) {
        // channel notice message received
    }

    func onChannelMessage(_ message: Chat.ChannelMessage) {
        // channel message received
    }
}

ChatInterface.addChannelListener(uniqueKey: "UNIQUE_KEY", listener: ChatChannelListener())
#import "HIVEService.h"

@interface ChatChannelListener : NSObject <HiveChatChannelMessageDelegate>
@end

@implementation ChatChannelListener
- (void)onEnteredMember:(Chat.EnteredMember *)member {
    // member entered
}

- (void)onExitedMember:(Chat.ExitedMember *)member {
    // member exited
}

- (void)onDeletedChannel:(Chat.DeletedChannel *)channel {
    // channel deleted
}

- (void)onNoticeMessage:(Chat.ChannelNoticeMessage *)message {
    // channel notice message received
}

- (void)onChannelMessage:(Chat.ChannelMessage *)message {
    // channel message received
}
@end

[ChatInterface addChannelListenerWithUniqueKey:@"UNIQUE_KEY" listener:[[ChatChannelListener alloc] init]];

1:1 메시지 이벤트

1:1 메시지 이벤트는 개인 메시지 전송 이벤트를 전달합니다.

1:1 메시지 이벤트 유형

이벤트명 발생 시기 설명
OnDirectMessage 1:1 메시지 수신 시 1:1 메시지 수신 시 발생합니다. 1:1 메시지 정보를 포함한 객체(DirectMessage)를 전달합니다.

DirectMessage

필드명 설명 타입
from 메시지 발신자 long
fromExtra 메시지 발신자 추가 정보 string
to 메시지 수신자 long
message 메시지 string
timestamp 이벤트 발생 시간 string
using hive;

DirectMessageHandler directMessageHandler = new DirectMessageHandler
{
    OnDirectMessage = (message) =>
    {
        // direct message received
    }
};
Chat.addDirectMessageHandler("UNIQUE_KEY", directMessageHandler);
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;

class DirectMessageListenerImpl : public DirectMessageListener {
    void onDirectMessage(DirectMessage const & message) override {
        // direct message received
    }
};

Chat::addDirectMessageListener("UNIQUE_KEY", new DirectMessageListenerImpl());
import com.hive.Chat;

Chat.addDirectMessageListener("UNIQUE_KEY", object: Chat.DirectMessageListener{
    override fun onDirectMessage(message: Chat.DirectMessage) {
        // direct message received
    }
})
import com.hive.Chat;

Chat.addDirectMessageListener("UNIQUE_KEY", new Chat.DirectMessageListener() {
    @Override
    public void onDirectMessage(@NonNull Chat.DirectMessage message) {
        // direct message received
    }
});
import HIVEService

class ChatDirectMessageListener: HiveChatDirectMessageDelegate {
    func onDirectMessage(_ message: Chat.DirectMessage) {
        // direct message received
    }
}

ChatInterface.addDirectMessageListener(uniqueKey: "UNIQUE_KEY", listener: ChatDirectMessageListener())
#import "HIVEService.h"

@interface ChatDirectMessageListener : NSObject <HiveChatDirectMessageDelegate>
@end

@implementation ChatDirectMessageListener
- (void)onDirectMessage:(Chat.DirectMessage *)message {
    // direct message received
}
@end

[ChatInterface addDirectMessageListenerWithUniqueKey:@"UNIQUE_KEY" listener:[[ChatDirectMessageListener alloc] init]];