Unity中Websocket的简单使用-创新互联

首先我们需要一个websocket服务器,之前的博文中有做
Tomcat架设简单Websocket服务器
用的时候打开就行了,先不管它

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册虚拟主机、营销软件、网站建设、瓦房店网站维护、网站推广。

Unity中新建场景
建UI(UGUI)
有一个连接按钮Button
一个信息输入框InputField
一个发送按钮Button
一个断开按钮Button
一个消息显示框Text

(猜你喜欢:Unity 连接WebSocket(ws://)服务器的方法)
Unity中Websocket的简单使用

场景中建一个GameObject,在上面加个脚本,就叫WSMgr好了
用到了BestHTTP这个插件

(猜你喜欢:在Unity3d下如何使用WebSocket)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using BestHTTP;
using BestHTTP.WebSocket;
using System;
using BestHTTP.Examples;
using UnityEngine.UI;
using System.Text;

public class WSMgr : MonoBehaviour {

   //public string url = "ws://localhost:8080/web1/websocket";
   public string url = "ws://localhost:8080/web1/ws";
   public InputField msg;
   public Text console;

   private WebSocket webSocket;

   private void Start()
   {
     init();
   }

   private void init()
   {
     webSocket = new WebSocket(new Uri(url));
     webSocket.OnOpen += OnOpen;
     webSocket.OnMessage += OnMessageReceived;
     webSocket.OnError += OnError;
     webSocket.OnClosed += OnClosed;
   }

   private void antiInit()
   {
     webSocket.OnOpen = null;
     webSocket.OnMessage = null;
     webSocket.OnError = null;
     webSocket.OnClosed = null;
     webSocket = null;
   }

   private void setConsoleMsg(string msg)
   {
     console.text = "Message: " + msg;
   }

   public void Connect()
   {
     webSocket.Open();
   }

   private byte[] getBytes(string message)
   {

     byte[] buffer = Encoding.Default.GetBytes(message);
     return buffer;
   }

   public void Send()
   {
     webSocket.Send(msg.text);
   }

   public void Send(string str)
   {
     webSocket.Send(str);
   }

   public void Close()
   {
     webSocket.Close();
   }

   #region WebSocket Event Handlers

   /// 
   /// Called when the web socket is open, and we are ready to send and receive data
   /// 
   void OnOpen(WebSocket ws)
   {
     Debug.Log("connected");
     setConsoleMsg("Connected");
   }

   /// 
   /// Called when we received a text message from the server
   /// 
   void OnMessageReceived(WebSocket ws, string message)
   {
     Debug.Log(message);
     setConsoleMsg(message);
   }

   /// 
   /// Called when the web socket closed
   /// 
   void OnClosed(WebSocket ws, UInt16 code, string message)
   {
     Debug.Log(message);
     setConsoleMsg(message);
     antiInit();
     init();
   }

   private void OnDestroy()
   {
     if(webSocket!=null && webSocket.IsOpen)
     {
       webSocket.Close();
       antiInit();
     }
   }

   /// 
   /// Called when an error occured on client side
   /// 
   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.Log(errorMsg);
     setConsoleMsg(errorMsg);
     antiInit();
     init();
   }

   #endregion
}

Connect  Send  Close 三个方法对应的就是三个按钮的功能
OnOpen  OnMessage  OnError  OnClose这四个一看就是Websocket的四个事件对应的方法

首先在Start方法中init()
点击Connect,连接
Unity中Websocket的简单使用
在输入框中输入,点击Send就发送
Unity中Websocket的简单使用

点击Close断开连接
Unity中Websocket的简单使用
底部的Text中会显示消息

同样,Tomcat服务端也有显示
Unity中Websocket的简单使用

发布WebGL测试可用

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前名称:Unity中Websocket的简单使用-创新互联
分享网址:http://ybzwz.com/article/ddiphh.html