Unity websocket客户端

🏆 个人愚见,没事写写笔记

🏆《博客内容》:Unity3D开发内容

🏆🎉欢迎 👍点赞✍评论⭐收藏

🔎目标:服务器和客户端可以实时的传输信息

☀️实现目标:

使用的websocket插件:NativeWebSocket
客户端代码:

cs 复制代码
using NativeWebSocket;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;
using WebSocketState = NativeWebSocket.WebSocketState;

public class WebSocketClient : MonoBehaviour
{
    private WebSocket _webSocket;

    public string webSocketServerURL = "ws://10.2.17.23:28080";
    private void Awake()
    {
        _webSocket = new WebSocket(webSocketServerURL);
    }
    private void Start()
    {
        _webSocket.OnOpen += _OnOpen;//连接成功时
        _webSocket.OnClose += _OnClose;//连接关闭
        _webSocket.OnError += _OnError;//连接出错
        _webSocket.OnMessage += _OnMessage;//从服务器发来的消息

        OnConnectServer();//开始连接服务器

    }

    private async void OnApplicationQuit()
    {
        await _webSocket.Close();
    }

    private void Update()
    {
#if !UNITY_WEBGL || UNITY_EDITOR
        _webSocket.DispatchMessageQueue();
#endif
        if (Input.GetKeyDown(KeyCode.S))
        {
            SendMessageToServer();
        }
    }

    public async void OnConnectServer()
    {
        await _webSocket.Connect();
    }


    public async void SendMessageToServer()
    {
        if (_webSocket.State == WebSocketState.Open)
        {
            await _webSocket.Send(new byte[] { 10, 20, 30 });//发送一条字节数据
            await _webSocket.SendText("发送一条string数据");
        }
    }


    #region WebSocket 回调事件

    private void _OnOpen()
    {
        Debug.Log("连接成功");
    }

    private void _OnClose(WebSocketCloseCode closeCode)
    {
        Debug.Log("连接关闭");
    }

    private void _OnError(string errorMsg)
    {
        Debug.LogError("出错原因:" + errorMsg);
    }

    private void _OnMessage(byte[] dataBytes)
    {
        var message = System.Text.Encoding.UTF8.GetString(dataBytes);
        Debug.Log("接收到的消息: (" + dataBytes.Length + " bytes) " + message);
    }
    #endregion
}

🚀感谢:🎉欢迎 👍点赞✍评论⭐收藏

相关推荐
chenzhou__1 小时前
独立游戏开发日志 ①:从信号博弈到涂色对战——一次玩法重构始
笔记·后端·学习·unity·go·独立游戏
五仁烧饼1 小时前
Unity Addressables 资源依赖治理:规则约束、自动修复与全链路防护
java·unity·游戏引擎
qq_3707730916 小时前
Unity游戏xLua逆向实战:从SO版本识别到Lua脚本热替换全链路
游戏·unity·lua
mxwin18 小时前
Unity Shader 水面 Shader 教程 从 Gerstner 波浪到屏幕折射、焦散、泡沫的完整实现
unity·游戏引擎
噗噗夹的TA之旅19 小时前
Shader 学习 21:自定义 Render Feature
学习·游戏·unity·c#·游戏引擎·图形渲染
zcmodeltech1 天前
化工装置沙盘模型多设备协同控制系统设计:基于STM32与Modbus RTU的装置-流程-安全联动方案
大数据·stm32·嵌入式硬件·安全·unity·制造
暗影凋落2 天前
Unity 射线检测优化:使用 Job System 实现高性能射线批处理
unity·游戏引擎·lucene
淡海水2 天前
12-01-YooAsset工程化-Unity资源管理规范
unity·c#·游戏引擎·yooasset
BuHuaX2 天前
U3D抖微小游戏开发流程 (一)
unity·c#·游戏引擎·游戏策划
_ZHOURUI_H_2 天前
Unity MyFramework 用法说明(二十三):使用 PrefabPoolManager 复用预设实例
unity·游戏引擎·游戏开发·游戏ui·手游开发