21天网站建设实录pdf,android项目开发,凡科快图免费版商用,深圳福田区有哪些企业你想在unity WebGL里面使用TCP通信吗#xff0c;那么你可以用一用webSocket。当然#xff0c;桌面端也可以使用webSocket#xff0c;这样Unity多平台发布的时候#xff0c;业务层的通信代码可以使用一套#xff0c;而不是桌面用socket#xff0c;网页用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 updateasync 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 stringvar 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.3sInvokeRepeating(SendWebSocketMessage, 0.0f, 0.3f);// waiting for messagesawait websocket.Connect();}void Update(){
#if !UNITY_WEBGL || UNITY_EDITORwebsocket.DispatchMessageQueue();
#endif}async void SendWebSocketMessage(){if (websocket.State WebSocketState.Open){// Sending bytesawait websocket.Send(new byte[] { 10, 20, 30 });// Sending plain textawait 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:8181server.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现在可以统一了。