이벤트 관리¶
Hive 채팅 기능은 앱 클라이언트로 아래 3가지 유형 이벤트를 전달합니다.
- 연결 이벤트
- 채널 이벤트
- 1:1 메시지 이벤트
사용자 정의 키와 함께 이벤트 리스너를 등록하면 이벤트를 수신할 수 있습니다.
연결 이벤트¶
연결 이벤트는 Hive 채팅 소켓 서버 연결과 관련한 이벤트입니다.
연결 이벤트 유형¶
| 이벤트명 | 발생 시기 | 설명 | 
|---|---|---|
| OnConnected | 연결 성공 시 | 연결 성공 시 발생합니다. | 
| OnDisconnected | 연결 실패 시 | 연결 실패 시 발생합니다. | 
#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 | 
#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]];