イベント

Prev Next

Classic/VPC環境で利用できます。

イベント

Ncloud Chatでは、クライアント側で発生する様々なイベントを処理できるイベントリスナー(Event Listener)機能を提供します。この機能により、ユーザーはチャットアプリケーション内で起こる様々な状況をリアルタイムで監視し、適切に反応することができます。以下は、主なイベントとイベント処理方法についての説明です。

主なイベントタイプ

  1. メッセージ受信 : 新しいメッセージを受信したときにトリガーされます。
  2. メッセージ削除 : メッセージが削除されたときにトリガーされます。
  3. エラーメッセージ : エラーが発生したときにトリガーされます。
  4. アクセス成功 : サーバへのアクセスが成功したときにトリガーされます。
  5. アクセス終了 : サーバアクセスが終了したときにトリガーされます。
  6. タイピング開始/終了 : ユーザーがタイピングを開始または終了したときにそれぞれトリガーされます。
  7. メンバー追加/削除 : チャンネルにユーザーが追加または削除されたときにトリガーされます。
  8. メンバー停止/退会 : ユーザーがチャンネルから停止されたり退会したときにトリガーされます。

次は、クライアント側からイベントを受信する方法です。

Javascript/Typescript

nc.bind("onMessageReceived", function (channel, message) {
    console.log("received a new message: ", e);   
});

Android (Kotlin)

val chatHandler = object : ChatHandler {
    override fun onMessageReceived(message: com.nbase.adpater.cloudchat.model.Message) {
        println("Message received: $message")
    }
}
NChat.addHandler("CloudChatHandler", chatHandler)

iOS (Swift)

class ChatViewController: ConnectDelegate {
    // CloudChat message reception event
    func onMessageReceived(data: NCMessage) {
        print("NcloudChat: New message received - \(data)")
    }
}

Unity

nc.dispatcher.onMessageReceived += message =>
{
    Console.WriteLine("received a new message: ", message);
}

イベントハンドラ接続と解除

イベントハンドラを使用して様々なイベントを受信し、必要なロジックを実装できます。以下のコードは、各イベントに対するイベントハンドラの接続と解除方法を示しています。

Javascript/Typescript

nc.bind("onMessageReceived", function (channel, message) {
      console.log(message);
});
nc.bind("onMessageDeleted", function (channel, message) {
  console.log(message);
});

// エラーメッセージ
nc.bind("onErrorReceived", function (error) {
  console.log(error);
});
// アクセス成功
nc.bind("onConnected", function (socket) {
  console.log("connected");
});
// アクセス終了
nc.bind("onDisconnected", function (reason) {
  console.log("disconnected");
});
nc.bind("onStartTyping", function (data) {
  console.log("Typing Start");
});
nc.bind("onStopTyping", function (data) {
  console.log("Typing Stop");
});
nc.bind("onMemberJoined", function (data) {
  console.log("onMemberJoined");
});
nc.bind("onMemberLeft", function (data) {
  console.log("onMemberLeft");
});
// mark Updated
nc.bind("onSubscriptionUpdated", function (channelId, data) {
  console.log("onSubscriptionUpdated");
});

Android (Kotlin)

val chatHandler = object : ChatHandler {
    override fun onMessageReceived(message: com.nbase.adpater.cloudchat.model.Message) {
        println("Message received: $message")
    }

    override fun onConnected() {
        println("onConnected")
    }

    override fun onDisconnected(reason: String) {
        println("onDisconnected")
    }

    override fun onErrorReceived(error: String) {
        println("onErrorReceived")
    }

    override fun onStartTyping(option: String) {
        println("onStartTyping")
    }

    override fun onStopTyping(option: String) {
        println("onStopTyping")
    }

    override fun onMemberJoined(member: Member) {
        println("onMemberJoined")
    }

    override fun onMemberLefted(member: Member) {
        println("onMemberLefted")
    }

    override fun onMemberUpdated(member: Member) {
        println("onMemberUpdated")
    }

    override fun onMessageDeleted(message: com.nbase.adpater.cloudchat.model.Message) {
        println("onMessageDeleted")
    }

    override fun onMessageUpdated(message: com.nbase.adpater.cloudchat.model.Message) {
        println("onMessageUpdated")
    }

    override fun onUserBanned(user: User) {
        println("onUserBanned")
    }

    override fun onUserDeleted(user: User) {
        println("onUserDeleted")
    }

    override fun onUserUpdated(user: User) {
        println("onUserUpdated")
    }
    
    override fun onSubscriptionUpdated(member: com.nbase.adpater.cloudchat.model.Member) {
        println("onSubscriptionUpdated")
    }
}
NChat.addHandler("CloudChatHandler", chatHandler)

iOS (Swift)

class ChatViewController: ConnectDelegate {
    // CloudChat Socket connection event
    func onConnect() {
        print("NcloudChat: Socket connected")
    }

    // User-triggered CloudChat Socket disconnection event
    func onDisconnect() {
        print("NcloudChat: Socket disconnected by user")
    }

    // CloudChat Socket connection status change event
    func onStatusChange(status: Any) {
        print("NcloudChat: Socket connection status changed - \(status)")
    }

    // CloudChat message reception event
    func onMessageReceived(data: NCMessage) {
        print("NcloudChat: New message received - \(data.content)")
    }

    // CloudChat message deletion event
    func onMessageDeleted(data: Any) {
        print("NcloudChat: Message deleted - \(data)")
    }

    // CloudChat "start typing" reception event
    func onStartTyping(data: Any) {
        print("NcloudChat: Other party started typing")
    }

    // CloudChat "stop typing" reception event
    func onStopTyping(data: Any) {
        print("NcloudChat: Other party stopped typing")
    }

    // CloudChat "event" reception event
    func onEvent(data: Any) {
        print("NcloudChat: Event occurred - \(data)")
    }

    // CloudChat new member joined the subscribed channel event
    func onMemberJoined(data: Any) {
        print("NcloudChat: New member joined - \(data)")
    }

    // CloudChat subscribed channel member left event
    func onMemberLeft(data: Any) {
        print("NcloudChat: Member left - \(data)")
    }

    // CloudChat channel member update event
    func onMemberUpdated(data: Any) {
        print("NcloudChat: Member updated - \(data)")
    }

    // CloudChat channel member deletion event
    func onMemberDeleted(data: Any) {
        print("NcloudChat: Member deleted - \(data)")
    }

    // CloudChat channel member banned event
    func onMemberBanned(data: Any) {
        print("NcloudChat: Member banned - \(data)")
    }

    // CloudChat Socket reconnection event
    func onReconnect(data: Any) {
        print("NcloudChat: Socket reconnected - \(data)")
    }

    // CloudChat Socket reconnection attempt event
    func onReconnectAttempt(data: Any) {
        print("NcloudChat: Socket reconnection attempt in progress - \(data)")
    }

    // CloudChat error occurred, Socket disconnected event
    func onError(error: Any) {
        print("NcloudChat: Error occurred - \(error)")
    }
    
    // CloudChat mark updated event
    func onSubscriptionUpdated(data: Any) {
        let dataString = String(describing: data)
        print("NcloudChat: Mark Updated - \(dataString)")
    }
}

Unity

// メッセージ受信
nc.dispatcher.onMessageReceived += e =>
{
    Console.WriteLine("onMessageReceived: ", e);
};

// メッセージ削除
nc.dispatcher.onMessageDeleted += e =>
{
    Console.WriteLine("onMessageDeleted: ", e);
};

// エラーメッセージ
nc.dispatcher.onErrorReceived += e =>
{
    Console.WriteLine("[CloudChatSample] onErrorReceived: ", e);
};

// アクセス成功
nc.dispatcher.onConnected += e =>
{
    Console.WriteLine("[CloudChatSample] Connected to server with id: {0} ", e);
};

// アクセス終了
nc.dispatcher.onDisconnected += e =>
{
    Console.WriteLine("Disconnected");
};

// タイピングを開始する場合
nc.dispatcher.onStartTyping += e =>
{
    Console.WriteLine("onStartTyping: ", e);
};

// タイピングを終了する場合
nc.dispatcher.onStopTyping += e =>
{
    Console.WriteLine("onStopTyping: ", e);
};

// ユーザーがチャンネルを登録した場合
nc.dispatcher.onMemberAdded += e =>
{
    Console.WriteLine("onMemberAdded: ", e);
};

// ユーザーがチャンネル登録を解除した場合
nc.dispatcher.onMemberLeft += e =>
{
    Console.WriteLine("[CloudChatSample] onMemberLeft: ", e);
};

// チャンネルからユーザーが停止された場合
nc.dispatcher.onMemberBanned += e =>
{
    Console.WriteLine("[CloudChatSample] onMemberBanned: ", e);
};

// チャンネルからユーザーが退会した場合
nc.dispatcher.onMemberDeleted += e =>
{
    Console.WriteLine("[CloudChatSample] onMemberDeleted: ", e);
};

nc.dispatcher.onSubscriptionUpdated += e =>
{
    Console.WriteLine("[CloudChatSample] onSubscriptionUpdated: ", e);
};

イベントリスナーを活用することで、Ncloud Chatユーザーはチャット環境の変化をリアルタイムで把握し、適切に対応することができます。