ここでは、Unityで作成のアプリにの処理中に、WebSocketを使ったメッセージの送受信を行う実装方法を紹介する。UnityのアプリはC#で開発しているものとする。また、WebSocket自体の実装については省略する。
本記事では、WebSocket-Sharp(http://sta.github.io/websocket-sharp/) を用いる。Unityが対応しているWebSocketは数少なく、WebSocket-Sharpはその対応しているうちの一つであるからである。
メッセージを送信する処理の実装
WebSocketを用いるためには、WebSocket-Sharpで定義されているWebSocketクラスのオブジェクトを生成する必要がある。コンストラクタの引数には、WebSocketが実装されているサーバのURLを指定する。
var socket = new WebSocket($"WebSocketが実装されているサーバのURL")
次に、WebSocketのコネクションを確立する。WebSocketのオブジェクトにクッキーなどの設定をする必要がある場合は、socket.Connect()を実行するよりも前に設定する。
socket.Connect();
そして、Send()により、クライアントに送信したいメッセージを送信することができる。
socket.Send("送信したい文字列");
メッセージを受信する処理の実装
WebSocketでメッセージを受信する際にも、WebSocketクラスのオブジェクトを生成する必要がある。コンストラクタの引数には、メッセージ送信側で指定しているWebSocketのサーバのURLと同じものを指定する。
var socket = new WebSocket($"WebSocketが実装されているサーバのURL")
次に、WebSocketからのメッセージを受信するために、WebSocketオブジェクトに対してイベントハンドラを登録する。イベントハンドラの登録とは、そのオブジェクトの特定のイベントが発生したことを検知して、そのタイミングで何かしらの処理を実行することである。イベントハンドラの登録は、以下のように記述できる。
// WebSocketの接続が確立されたときのイベントハンドラ
socket.OnOpen += (sender, e) => {[このときに実行したい処理を記述する]};
// WebSocketからメッセージが送信されたときのイベントハンドラ
socket.OnMessage += {[このときに実行したい処理を記述する]};
// WebSocketとの接続にエラーが発生したときのイベントハンドラ
socket.OnError += (sender, e) => {[このときに実行したい処理を記述する]};
// WebSocketとの接続が終了したときのイベントハンドラ
socket.OnClose += (sender, e) => {[このときに実行したい処理を記述する]};
イベントハンドラの登録後には、WebSocketのコネクションを確立すること。
socket.Connect();