这里没有使用Best Http,而是使用System.Net.WebSockets实现WebSocket客户端功能。
核心代码如下:
using UnityEngine;
using System.Net.WebSockets;
using System;
using System.Threading;
using UniRx;
using Cysharp.Threading.Tasks;
public class UnityWebSocketClient
{
public IObservable<byte[]> OnMsgReceived;
private static UnityWebSocketClient instance;
private ClientWebSocket clientWebSocket;
private Subject<byte[]> msgReceived = new Subject<byte[]>();
private UnityWebSocketClient()
{
init();
}
public static UnityWebSocketClient Instance
{
get
{
if (instance == null)
{
instance = new UnityWebSocketClient();
}
return instance;
}
}
private async UniTask init()
{
OnMsgReceived = msgReceived.AsObservable();
await ConnectAsync();
await UniTask.SwitchToTaskPool(