Unity 实现WebSocket 简单通信——客户端

创建连接

复制代码
ClientWebSocket socket = new ClientWebSocket();
string url = $"ws://{ip}:{port}";
bool createUri = Uri.TryCreate(url, UriKind.RelativeOrAbsolute, out Uri uri);
if (createUri)
{
    var task = socket.ConnectAsync(uri, CancellationToken.None);
    task.Wait(1000);

    if (socket.State == WebSocketState.Open)
    {
        Debug.Log("连接成功!");
    }
}

信息接收

复制代码
byte[] arrry = new byte[1024];
ArraySegment<byte> buffer = new ArraySegment<byte>(arrry);

var task = socket.ReceiveAsync(buffer, CancellationToken.None);
task.Wait(1000);

string msg = Encoding.UTF8.GetString(buffer.Array, 0, task.Result.Count);

信息发送

复制代码
ArraySegment<byte> array = new ArraySegment<byte>(Encoding.UTF8.GetBytes(msg));
var task = socket.SendAsync(array, WebSocketMessageType.Binary, true, CancellationToken.None);
task.Wait(2000);

断开连接

复制代码
var task = socket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None);
task.Wait(2000);

拓展

部分Unity 属性或方法在非主线程中调用出错解决

Unity 解决 "... can only be called from the main thread" 问题_unityexception: find can only be called from the m-CSDN博客文章浏览阅读5.1k次,点赞3次,收藏17次。Unity 解决 "... can only be called from the main thread" 问题_unityexception: find can only be called from the main thread. constructors ahttps://blog.csdn.net/xzqsr2011/article/details/128693150

服务端

基于.Net 框架实现WebSocket 简单通信------服务端-CSDN博客【代码】基于.Net 框架实现WebSocket 简单通信------服务端https://blog.csdn.net/2301_79311694/article/details/139480304

相关推荐
那个村的李富贵1 小时前
Unity打包Webgl后 本地运行测试
unity·webgl
nnsix2 小时前
Unity OpenXR开发HTC Vive Cosmos
unity·游戏引擎
nnsix2 小时前
Unity OpenXR,扳机键交互UI时,必须按下扳机才触发
unity·游戏引擎
nnsix3 小时前
Unity XR 编辑器VR设备模拟功能
unity·编辑器·xr
老朱佩琪!3 小时前
Unity访问者模式
unity·游戏引擎·访问者模式
不定时总结的那啥3 小时前
Unity实现点击Console消息自动选中预制体的方法
unity·游戏引擎
nnsix4 小时前
Unity OpenXR 关闭手柄的震动
unity·游戏引擎
CreasyChan4 小时前
Unity 中的反射使用详解
unity·c#·游戏引擎·游戏开发
Jessica巨人4 小时前
Shader显示为黑色
unity·shader
90后小陈老师17 小时前
Unity教学 项目2 2D闯关游戏
游戏·unity·游戏引擎