您当前的位置: 首页 >  unity

鱼儿-1226

暂无认证

  • 0浏览

    0关注

    1100博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Unity下使用BestHTTP插件进行Http和WebSocket通信

鱼儿-1226 发布时间:2022-02-21 11:50:49 ,浏览量:0

Unity版本:2018.4.17 BestHTTP版本:1.11.0 (下载地址) BestHTTP是Unity商店中比较流行的网络插件,兼容几乎所有的移动和独立平台。除了基础的HTTP功能,还支持WebSocket、SocketIO等常用特性,可以满足一般游戏项目的所有网络需求。

安装 下载Best HTTP v1.11.0.unitypackage后,Unity编辑器中右键"Import Package" -> "Custom Package"导入,然后在需要的代码中引入命名空间,就可以使用了。

using BestHTTP; 1 使用HTTP 进行HTTP请求非常简单,把目标Url作为构造参数创建 HTTPRequest类实例,并调用Send即可,推荐使用下面这种回调写法,简洁而清晰。

string str = "http://xxx.xxx.xxx.xxx?xx"; new HTTPRequest(new Uri(str), (req, response) => {     string text = response.DataAsText; // 服务器回复     Debug.Log("response data is " +text);  }).Send(); 1 2 3 4 5 使用WebSocket 创建WebSocket对象,并为该对象设置好Socket打开、消息接收、错误处理等各种回调。

需要注意的是,WebSocket消息的接收有两个方法:OnMessage和OnBinary,分别代表字符串和字节,具体使用哪个,需根据各自客户端和服务器的协议而定。

public class WebSocketTest {     string address = "wss://echo.websocket.org";     WebSocket webSocket;

    public void Init()      {         if (webSocket == null)          {             webSocket = new WebSocket(new Uri(address));

#if !UNITY_WEBGL             webSocket.StartPingThread = true; #endif

            // Subscribe to the WS events             webSocket.OnOpen += OnOpen;             webSocket.OnMessage += OnMessageRecv;             webSocket.OnBinary += OnBinaryRecv;             webSocket.OnClosed += OnClosed;             webSocket.OnError += OnError;

            // Start connecting to the server             webSocket.Open();         }     }

    public void Destroy()      {         if (webSocket != null)          {             webSocket.Close();             webSocket = null;         }     }

    void OnOpen(WebSocket ws)      {         Debug.Log("OnOpen: ");         webSocket.Send("123");     }

    void OnMessageRecv(WebSocket ws, string message)     {         Debug.LogFormat("OnMessageRecv: msg={0}", message);     }

    void OnBinaryRecv(WebSocket ws, byte[] data)      {         Debug.LogFormat("OnBinaryRecv: len={0}", data.Length);     }

    void OnClosed(WebSocket ws, UInt16 code, string message)      {         Debug.LogFormat("OnClosed: code={0}, msg={1}", code, message);         webSocket = null;     }

    void OnError(WebSocket ws, Exception ex)       {         string errorMsg = string.Empty; #if !UNITY_WEBGL || UNITY_EDITOR             if (ws.InternalRequest.Response != null)             {                 errorMsg = string.Format("Status Code from Server: {0} and Message: {1}", ws.InternalRequest.Response.StatusCode, ws.InternalRequest.Response.Message);             } #endif         Debug.LogFormat("OnError: error occured: {0}\n", (ex != null ? ex.Message : "Unknown Error " + errorMsg));         webSocket = null;     }

} ———————————————— 版权声明:本文为CSDN博主「楚游香」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/foupwang/article/details/104725423/

关注
打赏
1604459285
查看更多评论
立即登录/注册

微信扫码登录

0.0544s