Available in Classic and VPC
Events
Ncloud Chat provides the Event Listener function, which can handle various events that occur from the client's side. With this function, you can monitor many circumstances occurring in the chat application in real time and respond to them properly. The following describes the main events and how to handle events.
Main event types
- Receive message: triggered when a new message is received.
- Delete message: triggered when a message is deleted.
- Error message: triggered when an error occurs.
- Connected: triggered when successfully connected to the server.
- Disconnected: triggered when disconnected from the server.
- Typing start and end: triggered when you start or end typing.
- Add and remove members: triggered when a user is added or removed.
- Member suspension and withdrawal: triggered when a user gets suspended in the channel or withdraws from the channel.
The following shows how to receive events from the client's side.
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);
}
Connect and disconnect event handler
With event handlers, you can receive diverse events, and implement the logic you need. The following codes show how to connect and disconnect the event handler for each event:
Javascript/Typescript
nc.bind("onMessageReceived", function (channel, message) {
console.log(message);
});
nc.bind("onMessageDeleted", function (channel, message) {
console.log(message);
});
// Error message
nc.bind("onErrorReceived", function (error) {
console.log(error);
});
// Connected
nc.bind("onConnected", function (socket) {
console.log("connected");
});
// Disconnected
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
// Receive message
nc.dispatcher.onMessageReceived += e =>
{
Console.WriteLine("onMessageReceived: ", e);
};
// Delete message
nc.dispatcher.onMessageDeleted += e =>
{
Console.WriteLine("onMessageDeleted: ", e);
};
// Error message
nc.dispatcher.onErrorReceived += e =>
{
Console.WriteLine("[CloudChatSample] onErrorReceived: ", e);
};
// Connected
nc.dispatcher.onConnected += e =>
{
Console.WriteLine("[CloudChatSample] Connected to server with id: {0} ", e);
};
// Disconnected
nc.dispatcher.onDisconnected += e =>
{
Console.WriteLine("Disconnected");
};
// When typing starts
nc.dispatcher.onStartTyping += e =>
{
Console.WriteLine("onStartTyping: ", e);
};
// When typing ends
nc.dispatcher.onStopTyping += e =>
{
Console.WriteLine("onStopTyping: ", e);
};
// When a user subscribes to a channel
nc.dispatcher.onMemberAdded += e =>
{
Console.WriteLine("onMemberAdded: ", e);
};
// When a user unsubscribes from a channel
nc.dispatcher.onMemberLeft += e =>
{
Console.WriteLine("[CloudChatSample] onMemberLeft: ", e);
};
// When a user gets suspended from a channel
nc.dispatcher.onMemberBanned += e =>
{
Console.WriteLine("[CloudChatSample] onMemberBanned: ", e);
};
// When a user withdraws from a channel
nc.dispatcher.onMemberDeleted += e =>
{
Console.WriteLine("[CloudChatSample] onMemberDeleted: ", e);
};
nc.dispatcher.onSubscriptionUpdated += e =>
{
Console.WriteLine("[CloudChatSample] onSubscriptionUpdated: ", e);
};
With Event Listener, the user of Ncloud Chat can identify the change of the chat environment in real time and respond to it properly.