当前位置:   article > 正文

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

unity websocket 服务端

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");
        }  
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

客户端代码说明

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

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

消息从 Unity 客户端发送到 NodeJS 服务器,NodeJS 服务器将消息转发回 Unity 客户端
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/777596
推荐阅读
相关标签
  

闽ICP备14008679号