WebSocket 客户端和服务器(Unity 和 NodeJS)

avatar
作者
筋斗云
阅读量:2

WebSocket 客户端和服务器(Unity 和 NodeJS)

在这里插入图片描述

NodeJS WebSocket 服务器

这是 NodeJS Websocket 服务器示例:

const WebSocket = require(‘ws’) const wss = new WebSocket.Server({
port: 8080 },()=>{
console.log(‘server started’) }) wss.on(‘connection’, function connection(ws) { ws.on(‘message’, (data) => {
console.log(‘data received \n %o’,data)
ws.send(data); }) })
wss.on(‘listening’,()=>{
console.log(‘listening on 8080’)
})

服务器代码说明
我们使用 ws 模块来创建 websocket 服务器
websocket 套接字服务器有 5 个事件,我们可以监听并触发我们想要的任何操作,您可以在此处找到这些事件的文档。

Websocket Server Module eventsWebSocket 服务器模块事件

首先,我们创建服务器并在端口 8080 上侦听消息,然后打印小消息“服务器已启动”
其次,我们监听WebSocket服务器模块事件,我们使用监听和连接两个事件来监听。
一旦我们开始监听连接事件,我们就可以捕获连接的客户端并开始监听客户端事件。
WebSocket 客户端模块有 8 个我们可以监听的事件,你可以在这里找到 WebSocket 客户端事件的文档

WebSocket Client Module eventsWebSocket 客户端模块事件

一旦我们捕获连接的客户端,我们就会监听客户端上的“消息”事件并收集从客户端发送的数据,然后将其发送回同一客户端。

启动服务器时,您应该在终端中看到以下内容
在这里插入图片描述

在 VS Code 终端中查看

Unity 中的 WebSocket 客户端 (C#)

为了开始在 Unity 中使用 WebSocket 客户端,我们将使用 C# 包管理器 Nuget 添加 WebSocket C# 库。
您可以从这里下载 Nuget Unity 插件
将 Nuget Unity 包导入到项目中后,您可以搜索“WebSocketSharp-netstandard”并安装到 Unity 项目中。

在这里插入图片描述

以下是 Unity C# WebSocket 客户端示例:
using UnityEngine; using WebSocketSharp; public class WsClient : MonoBehaviour {     WebSocket ws;     private void Start()     {         ws = new WebSocket("ws://localhost:8080");         ws.Connect();         ws.OnMessage += (sender, e) =>         {             Debug.Log("Message Received from "+((WebSocket)sender).Url+", Data : "+e.Data);         };     } private void Update()     {         if(ws == null)         {             return;         } if (Input.GetKeyDown(KeyCode.Space))         {             ws.Send("Hello");         }       } } 

客户端代码说明

我们使用两个命名空间“UnityEngine”,因此我们可以使用 Monobehaviour 来使用启动和更新回调,并且我们使用“WebSocketSharp”来使用 WebSocket 客户端实现。
在 Start 函数中,我们将一个新的 WebSocket 对象与 WebSocket url 分配给 ws WebSocket 对象。
ws = new WebSocket("ws://localhost:8080"); 
然后我们开始WebSocket连接
ws.Connect(); 
然后,我们向 onMessage 添加一个侦听器,以打印发送者 url 和从发送者收到的数据。
ws.OnMessage += (sender, e) =>         {             Debug.Log("Message Received from "+((WebSocket)sender).Url+", Data : "+e.Data);         }; 
在 Update 回调中,我们检查 websocket 是否已启动,如果没有则返回。
如果按下空格键,我们会向服务器发送一条消息。
private void Update()     {         if(ws == null)         {             return;         } if (Input.GetKeyDown(KeyCode.Space))         {             ws.Send("Hello");         }       } } 
在编辑器中运行场景并且服务器正在运行后,您应该在 Unity 和 NodeJS 服务器中看到以下内容

在这里插入图片描述
在这里插入图片描述

消息从 Unity 客户端发送到 NodeJS 服务器,NodeJS 服务器将消息转发回 Unity 客户端

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!