이벤트 관리¶
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]];