Skip to main content

ChatModels

Data model and interface definitions used in the chat system.

IChatListener Interface

Listener interface for receiving chat events.

MethodDescription
OnConnectedCalled on successful server connection
OnDisconnectedCalled on server disconnection
OnErrorCalled on error occurrence
OnChannelsCalled when channel list is received
OnSubscribedCalled on channel subscription
OnUnSubscribedCalled on channel unsubscription
OnPublicMessageCalled when public message is received
OnPrivateMessageCalled when private message is received
OnNotifyMessageCalled when notification message is received
OnPlayerOnlineCalled when player online status is received

Data Models

ChatServerResponse

FieldTypeDescription
ErrorCodestringError code
MessagestringMessage
ServersChatServerItem[]Server list

ChatServerItem

FieldTypeDescription
AddrstringServer address
PortintServer port
SecurestringSSL usage (Y/N)

ChatMessageModel

FieldTypeDescription
midstringMessage ID
typebyteEvent type
errorintError code
gameIdstringGame ID
serviceKeystringService key
channelIdstringChannel ID
userUniqueIdstringUser unique ID
userNamestringUsername
privateToUserUniqueIdstringPrivate message target ID
messagestringMessage content
channelsChatChannelInfo[]Channel information array
playersChatPlayerInfo[]Player information array
onlinePlayersstring[]Online player ID array
prevMessageCountintNumber of previous messages to fetch
ipAddrstringIP address
createdAtstringCreation time

ChatUserInfo

FieldTypeDescription
visitorIdstringVisitor ID
visitorNamestringVisitor name

ChatChannelInfo

FieldTypeDescription
channelstringChannel name
countintNumber of users

ChatPlayerInfo

FieldTypeDescription
userUniqueIdstringUser unique ID
onlinestringOnline status

Unity C# Implementation

using System;

public interface IChatListener
{
void OnConnected();
void OnDisconnected();
void OnError(string code, string message);
void OnChannels(ChatChannelInfo[] channels);
void OnSubscribed(ChatUserInfo user);
void OnUnSubscribed(ChatUserInfo user);
void OnPublicMessage(ChatUserInfo sender, string message);
void OnPrivateMessage(ChatUserInfo sender, string message);
void OnNotifyMessage(ChatUserInfo sender, string message);
void OnPlayerOnline(ChatPlayerInfo[] players);
}

[Serializable]
public class ChatServerResponse
{
public string ErrorCode;
public string Message;
public ChatServerItem[] Servers;
}

[Serializable]
public class ChatServerItem
{
public string Addr;
public int Port;
public string Secure;
}

[Serializable]
public class ChatMessageModel
{
public string mid;
public byte type;
public int error;
public string gameId;
public string serviceKey;
public string channelId;
public string userUniqueId;
public string userName;
public string privateToUserUniqueId;
public string message;
public ChatChannelInfo[] channels;
public ChatPlayerInfo[] players;
public string[] onlinePlayers;
public int prevMessageCount;
public string ipAddr;
public string createdAt;
}

[Serializable]
public class ChatUserInfo
{
public string visitorId;
public string visitorName;
}

[Serializable]
public class ChatChannelInfo
{
public string channel;
public int count;
}

[Serializable]
public class ChatPlayerInfo
{
public string userUniqueId;
public string online;
}