TCP カスタムメッセージの送信方法
Diarkis サーバにカスタムコマンドを実装し、それらのコマンドを呼び出すことができます。
// ver = command version // cmd = command ID // payload = message tcp.Send(ver, cmd, payload);
|
TCP クライアント - OnConnect
接続が正常に確立されると、OnConnect イベントが発生します。
tcp.OnCreate += OnTcpCreate;
private void OnTcpCreate(bool reconnected) { // A connection is successfully established. Now you may interactive wit the server cluster }
|
TCP クライアント - OnException
このイベントは、内部で例外が捕捉された場合や、Connectメソッドが失敗した場合に発生します。
tcp.OnException += OnTcpException;
private void OnTcpException(int errorCode, string errorMessage) { // Handle the exception here }
|
TCP クライアント - OnHeartbeat
TCPクライアントは、接続を維持するために、特定の間隔(デフォルトでは5秒ごと)でハートビートパケットを送受信します。このイベントは、クライアントがサーバクラスターから応答を受信したときに発生します。
tcp.OnHeartbeat += OnTcpHeartbeat;
private void OnTcpHeartbeat() { // Do something if you would like to }
|
TCP クライアント - OnOffline
このイベントは、接続されたサーバがオフラインになる準備をしているときに発生します。このイベントが発生した場合、クライアントは現在の接続を終了し、新しい接続を再確立する必要があります。
tcp.OnOffline += OnTcpOffline; tcp.OnDisconnect += OnTcpDisconnect;
private void OnTcpOffline() { // We set a flag, so we can perform re-connection in OnDisconnect event listener reconnectFlag = true; // This is raise OnDisconnect event tcp.Disconnect(); } // bool reconnecting is set to true when you use tcp.Reconnect() private void OnTcpDisconnect(bool reconnecting) { if (reconnectFlag) { // Call the application server to indirectly obtain a new endpoint here // Assuming we have the new endpoint, we proceed with reconnect tcp.SetEncryptionKeys(newSid, newKey, newIv, newMacKey); tcp.Connect(newAddr, newPort); } }
|
TCP クライアント - OnDisconnect
このイベントは、クライアントがDiarkisサーバクラスターから正常に切断されたときに発生します。
tcp.OnDisconnect += OnTcpDisconnect;
private void OnTcpDisconnect(bool reconnecting) { // bool reconnecting is set to true only when tcp.Reconnect() is used. }
|
TCP クライアント - OnPush
このイベントは、クライアントがDiarkisサーバークラスターからプッシュとしてパケット(クライアントから要求されていないパケット)を受信したときに発生します。
tcp.OnPush += OnTcpPush;
private void OnTcpPush(uint ver, uint cmd, byte[] payload) { // Consume payload accordingly using uint ver and cmd switch(ver) { case MY_CUSTOM_CMD_VER1: HandleCustomCmdVer1(cmd, payload); default: // Unknown command version... :(
break; } }
private void HandleCustomCmdVer1(uint cmd, byte[] payload) { switch(cmd) { case CMD1: HandleCmd1(payload); break; } }
|