iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >Unity使用webSocket与服务器通信(一)搭建一个简单地服务器和客户端
  • 903
分享到

Unity使用webSocket与服务器通信(一)搭建一个简单地服务器和客户端

unitywebsocketC#服务器 2023-08-19 09:08:36 903人浏览 薄情痞子
摘要

你想在Unity webGL里面使用tcp通信吗,那么你可以用一用websocket。当然,桌面端也可以使用WEBSocket,这样Unity多平台发布的时候,业务层的通信代码可以使用一套,而不是桌面用socket,网页用Http… 一、什

你想在Unity webGL里面使用tcp通信吗,那么你可以用一用websocket。当然,桌面端也可以使用WEBSocket,这样Unity多平台发布的时候,业务层的通信代码可以使用一套,而不是桌面用socket,网页用Http

一、什么是webSocket?

顾名思义,它就是web版的socket?那什么是socket呢?…

二、Unity中webSocket相关的包有哪些?

endel/NativeWebSocket
项目链接

在这里插入图片描述

在这里插入图片描述

三、Unity客户端的实现

  • 联网演示
    请添加图片描述

  • 绑定脚本
    在这里插入图片描述

  • 代码清单
    代码来自NativeWebSocket官网demo,略作修改

using System;using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using NativeWebSocket;public class Connection : MonoBehaviour{    WebSocket websocket;    public Text textLog;    // Start is called before the first frame update    async void Start()    {        websocket = new WebSocket("ws://192.168.0.146:8081");        websocket.OnOpen += () =>        {            Debug.Log("Connection open!");            textLog.text = $"Connection open! {Time.realtimeSinceStartup} \n {textLog.text}";        };        websocket.OnError += (e) =>        {            Debug.Log("Error! " + e);            textLog.text = $"Error:{e} {Time.realtimeSinceStartup} \n {textLog.text}";        };        websocket.OnClose += (e) =>        {            Debug.Log("Connection closed!");            textLog.text = $"Connection closed! {Time.realtimeSinceStartup} \n {textLog.text}";        };        websocket.OnMessage += (bytes) =>        {            Debug.Log("OnMessage!");            textLog.text = $"OnMessage! {Time.realtimeSinceStartup} \n {textLog.text}";            Debug.Log(bytes);            // getting the message as a string            var message = System.Text.Encoding.UTF8.GetString(bytes);            textLog.text = $"消息内容:{message} {Time.realtimeSinceStartup} \n {textLog.text}";            //Debug.Log("OnMessage! " + message);        };        // Keep sending messages at every 0.3s        InvokeRepeating("SendWebSocketMessage", 0.0f, 0.3f);        // waiting for messages        await websocket.Connect();    }    void Update()    {#if !UNITY_WEBGL || UNITY_EDITOR        websocket.DispatchMessageQueue();#endif    }    async void SendWebSocketMessage()    {        if (websocket.State == WebSocketState.Open)        {            // Sending bytes            await websocket.Send(new byte[] { 10, 20, 30 });            // Sending plain text            await websocket.SendText("plain text message");        }    }    private async void OnApplicationQuit()    {        await websocket.Close();    }}

四、服务端的实现(C# winform

在这里插入图片描述
请添加图片描述

1、服务器端用到的包

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

github链接

2、主要代码

代码来自官网Demo,略有修改

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.windows.FORMs;using Fleck;namespace WinFormsApp1{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {            var server = new WebSocketServer("ws://192.168.0.146:8081");  //ws://localhost:8081    ws://127.0.0.0:8181            server.Start(socket =>            {                socket.OnOpen = () =>                {                    Debug.WriteLine($"有新用户连入:{socket.ConnectionInfo.ClientIpAddress}");                };                socket.OnClose = () =>                {                    Debug.WriteLine($"用户断开连接:{socket.ConnectionInfo.ClientIpAddress}");                };                socket.OnMessage = message =>                {                    socket.Send($"服务器收到消息 : {DateTime.Now.ToString()}");                    Debug.WriteLine($"收到一条消息,来自:{socket.ConnectionInfo.ClientIpAddress}");                };            });            Debug.WriteLine("服务器已经启动!");        }    }}

五、客户端的WebGL和Win 桌面测试

桌面和webGL都没问题、这样,可以一套代码打天下。
以前用socket在桌面(包括一体头盔),在web端只能用http,现在可以统一了。

来源地址:https://blog.csdn.net/dzj2021/article/details/129323139

--结束END--

本文标题: Unity使用webSocket与服务器通信(一)搭建一个简单地服务器和客户端

本文链接: https://www.lsjlt.com/news/375239.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作