# 채팅 메시지 이벤트

채팅 메시지는 수신 시 Channel객체를 통해서 ChannelHandler의 메서드가 실행됩니다. 사용자는 ChannelHandler를 상속받아 사용자의 EventHandler를 정의하여, VChatCloud.connect(handler) 메서드를 이용해 이벤트 핸들러를 Channel객체에 등록할 수 있습니다.

# 시작하기

# ChannelHandler 클래스 상속받기

우선 ChannelHandler를 상속받는 새로운 class를 생성합니다. 아래 예제에서는 CustomHandler라는 이름을 사용했습니다.

class CustomHandler extends ChannelHandler {
  /// 메시지 수신 시 실행
  
  void onMessage(ChannelMessageModel message) {
    // ...
  }

  /// 귓속말 수신 시 실행
  
  void onWhisper(ChannelMessageModel message) {
    // ...
  }

  // ...
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

아래에는 각각의 이벤트에 대한 설명과, 샘플 앱 에서 사용한 예제코드가 첨부되어 있습니다. 필요한 메서드들을 새로운 class에 오버라이딩해서 정의하면 됩니다.

# 메시지 수신 이벤트

일반 메시지 수신 시 실행되는 함수입니다.

  • 예제 코드

void onMessage(ChannelMessageModel message) {
  var chatData = ChatItem.fromChannelMessageModel(message);
  _channel.addChatLog(chatData);
}
1
2
3
4
5

# 귓속말 수신 이벤트

귓속말 수신 시 실행되는 함수입니다.

  • 예제 코드

void onWhisper(ChannelMessageModel message) {
  var chatData = ChatItem.fromChannelMessageModel(message)
    ..messageType = MessageType.whisper;
  _channel.addChatLog(chatData);
}
1
2
3
4
5
6

# 공지사항 수신 이벤트

운영자의 공지사항 수신 시 실행되는 함수입니다.

  • 예제 코드

void onNotice(ChannelMessageModel message) {
  var chatData = ChatItem.fromChannelMessageModel(message)
    ..messageType = MessageType.notice;
  _channel.addChatLog(chatData);
}
1
2
3
4
5
6

# 유저 접속 이벤트

유저 접속 시 실행되는 함수입니다.

  • 예제 코드

void onJoinUser(ChannelMessageModel message) async {
  var chatData = ChatItem.fromChannelMessageModel(message)
    ..messageType = MessageType.join
    ..clientKey = '';
  _channel.addChatLog(chatData);

  if (_channel.channel != null) {
    _channel.setClientList(await _channel.channel!.requestClientList());
  }
}
1
2
3
4
5
6
7
8
9
10
11

# 유저 퇴장 이벤트

접속중인 유저가 퇴장 시 실행되는 함수입니다.

  • 예제 코드

void onLeaveUser(ChannelMessageModel message) {
  var chatData = ChatItem.fromChannelMessageModel(message)
    ..messageType = MessageType.leave
    ..clientKey = '';
  _channel.addChatLog(chatData);
}
1
2
3
4
5
6
7

# 커스텀 이벤트 수신 이벤트

커스텀 이벤트 수신 시 실행되는 함수입니다.

  • 예제 코드

void onCustom(ChannelMessageModel message) {
  // 개인의 CustomEvent에 맞는 코드 작성
}
1
2
3
4
Copyright 2022. E7Works Inc. & JOYTUNE Corp. All Rights Reserved.