websocket-sharpを使ってWebSocketに接続
websocket-sharpはUnityで使えるWebSocket接続用のライブラリ。
基本的な使い方は以下の通りで、WebSocketインスタンスを作ってURLを引数として渡し、Connectメソッドで接続するだけと非常にお手軽。
WebSocketController.cs
using System;
using UnityEngine;
using WebSocketSharp;
public class WebSocketController : MonoBahaviour
{
private WebSocket webSocket;
// wssから始まるWebSocketの接続先URL。
private string baseURL = "wss://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
// WebSocketインスタンスを作成し、接続先URLを渡す。
webSocket = new WebSocket(baseURL);
// WebSocketへ接続。非同期で行いたい場合はwebSocket.ConnectAsync()を使う。
webSocket.Connect();
}
An error has occurred during a TLS handshake.
接続をしようとすると上記のエラーメッセージが出た。
URLがwssから始まるセキュア通信用のプロトコルだったため、webSocketインスタンスをセキュア通信ができるように弄ってあげる必要があるみたい。
そこで以下のようにコードを修正。
WebSocketController.cs
using System;
using UnityEngine;
using WebSocketSharp;
public class WebSocketController : MonoBahaviour
{
private WebSocket webSocket;
private string baseURL = "wss://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
webSocket = new WebSocket(baseURL);
// この一文を追加する。
webSocket.SslConfiguration.EnabledSslProtocols = System.Security.Authentication.SslProtocols.Tls12;
webSocket.Connect();
}
webSocket.SslConfigurationはセキュアな通信を確立するために使われるクラスで、その中のEnabledSslProtocolsというプロパティが認証用のプロトコル(SslProtocols 列挙型)を格納するプロパティとなっている。
そこへSslProtocolsの「Tls12」をセットしてあげることで、セキュアな通信ができるようになる。
あとは通常時と同じくConnectメソッドで接続してあげればエラーは解消された。