WebSocket の使い方 - Unity
Unityの「WebSocket」の使い方をまとめました。「Node.js版」のサンプルとの通信できます。
1. WebSocket
Webアプリで双方向通信を実現するための技術規格。
文字列とバリナリデータを送受信することが可能。
2. プロジェクトの作成
プロジェクトの作成方法は、次のとおり。
(1) 「websocket-sharp」をダウンロード。
(2) 「websocket-sharpフォルダ」内の「websocket-sharp.sln」をダブルクリック。
Visual Studioが起動します。
(3) 「Example」「Example1」「Example2」「 Example3」を削除。
(4) メニュー「プロジェクト → アクティブ構成 → リリース」を選択。
(5) メニュー「ビルド → すべてビルド」を選択。
成功すると、websocket-sharp/bin/Release/websocket-sharp.dllが生成されます。
(6) UnityプロジェクトのAssets直下にPluginsフォルダを作り、「websocket-sharp.dll」を配置。
3. サーバの作成
WebSocketのサーバのコードは、次のとおり。
◎ ServerEx.cs
using UnityEngine;
using System.Collections;
using WebSocketSharp;
using WebSocketSharp.Net;
using WebSocketSharp.Server;
public class ServerEx: MonoBehaviour {
WebSocketServer server;
// スタート時に呼ばれる
void Start ()
{
// WebSocketのサーバの生成
server = new WebSocketServer(5001);
server.AddWebSocketService<Echo>("/");
server.Start();
}
// 破棄時に呼ばれる
void OnDestroy()
{
server.Stop();
server = null;
}
}
public class Echo : WebSocketBehavior
{
// クライアントからのデータ受信時に呼ばれる
protected override void OnMessage(MessageEventArgs e)
{
Debug.Log(e.Data);
// クライアントにデータを返信
Sessions.Broadcast(e.Data);
}
// 切断時に呼ばれる
protected override void OnClose(CloseEventArgs e) {
Debug.Log("close");
}
}
◎ Serverの生成
引数port付きでServerクラスを生成します。その後、AddWebSocketService()でWebSocketBehaviorを追加し、Start()で開始します。
◎ WebSocketのメソッド
WebSocketのメソッドは次の2つです。
・AddWebSocketService(): サーバーの振る舞いの追加。
・Start(): サーバーの開始。
・Send(data): クライアントへのデータの送信。
・Close(): クライアントとの切断。
◎ WebSocketのイベント
WebSocketのイベントは次の4つです。
・OnOpen: 接続時に呼ばれる。
・OnMessage: データ受信時に呼ばれる。
・OnClose: 切断時に呼ばれる。
・OnError: エラー時に呼ばれる。
4. クライアントの作成
WebSocketのクライアントのコードは、次のとおり。
◎ ClientEx.cs
using UnityEngine;
using System.Collections;
using WebSocketSharp;
using WebSocketSharp.Net;
public class ClientEx: MonoBehaviour {
WebSocket ws;
// スタート時n呼ばれる
void Start()
{
// WebSocketのクライアントの生成
ws = new WebSocket("ws://localhost:5001/");
// 接続時に呼ばれる
ws.OnOpen += (sender, e) =>
{
Debug.Log("open");
};
// サーバからのデータ受信時に呼ばれる
ws.OnMessage += (sender, e) =>
{
Debug.Log(e.Data);
};
// クローズ時に呼ばれる
ws.OnClose += (sender, e) =>
{
Debug.Log("close");
};
// エラー時に呼ばれる
ws.OnError += (sender, e) =>
{
Debug.Log(e.Message);
};
// 接続
ws.Connect();
}
// フレーム毎に呼ばれる
void Update()
{
// スペースキー押上時に呼ばれる
if (Input.GetKeyUp(KeyCode.Space))
{
ws.Send("hello");
}
}
// 破棄時に呼ばれる
void OnDestroy()
{
ws.Close();
ws = null;
}
}
◎ WebSocketの生成
引数URL付きでWebSocketを生成します。
5. 実行
コードをゲームオブジェクトに追加して実行。
この記事が気に入ったらサポートをしてみませんか?