当前位置: 首页 > news >正文

阿里巴巴网站建设规划it运维职业规划

阿里巴巴网站建设规划,it运维职业规划,网站制作的语言,企业需要缴纳哪些税C#服务端用到Fleck包#xff0c;它包含哪些可用的回调函数#xff0c;有哪些常用的api方法#xff1f; 演示#xff1a;服务端收到Unity用户发来的信息 1、Fleck服务器提供哪些回调函数 Fleck提供的回调函数有下面几种#xff1a; //用户连入服务器时... Action OnOp…C#服务端用到Fleck包它包含哪些可用的回调函数有哪些常用的api方法 演示服务端收到Unity用户发来的信息 1、Fleck服务器提供哪些回调函数 Fleck提供的回调函数有下面几种 //用户连入服务器时... Action OnOpen { get; set; }//用户与服务器断开连接时... Action OnClose { get; set; }//收到字符串消息时... Actionstring OnMessage { get; set; }//收到二进制数据时... Actionbyte[] OnBinary { get; set; }//收到别人发来的ping信息时... Actionbyte[] OnPing { get; set; }//收到别人发来的pong信息时... Actionbyte[] OnPong { get; set; }//出错的时候调用...[?谁出错服务器出错还是连接出错出的是什么错] ActionException OnError { get; set; }2 、服务器提供的其它API 其它常用的api主要有 //发送字符串 Task Send(string message);//发送字节码(二进制数据) // 1Byte 8 bits // 1KB 1024 Bytes // 1MB 1024KB Task Send(byte[] message);//发送一个ping信息 Task SendPing(byte[] message);//发送一个pong信息 Task SendPong(byte[] message);//关闭连接 void Close();//关闭连接关闭连接池中指定序号的连接 void Close(int code);ping pong的作用是啥 WebSocket为了保持客户端、服务端的实时双向通信需要确保客户端、服务端之间的TCP通道保持连接没有断开。然而对于长时间没有数据往来的连接如果依旧长时间保持着可能会浪费包括的连接资源。但不排除有些场景客户端、服务端虽然长时间没有数据往来但仍需要保持连接。这个时候可以采用心跳来实现。 发送方-接收方ping 接收方-发送方pong C# 在WinForm里使用Fleck作为服务器的简单示例代码 private void button1_Click(object sender, EventArgs e) {if (hasStartedServer)//不重复启动服务器实例return;var server new WebSocketServer(ws://192.168.0.137: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});UserSockets.First(x x.socket.ConnectionInfo.Id socket.ConnectionInfo.Id).connected false;};//收到string信息时...socket.OnMessage message {socket.Send($服务器收到消息 : {DateTime.Now.ToString()});Debug.WriteLine($收到一条消息来自{socket.ConnectionInfo.ClientIpAddress});Debug.WriteLine(message);var cmd message.Split(#)[0];if (cmd name){var userID message.Split(#)[1];Debug.WriteLine($收到一条消息来自用户{userID} 连接id{socket.ConnectionInfo.Id});UserSocket user new UserSocket(){userID userID,socket socket,connected true};UserSockets.Add(user);}};//收到二进制信息时...socket.OnBinary bytes {var userName UserSockets.First(x x.socket.ConnectionInfo.Id socket.ConnectionInfo.Id).userID;Debug.WriteLine($收到二进制数据长度为{bytes.Length}Bytes,来自ip:{socket.ConnectionInfo.ClientIpAddress},userID {userName});};});Debug.WriteLine(服务器已经启动);hasStartedServer true; }3、服务器与客户端建立的连接包含哪些信息 public interface IWebSocketConnectionInfo{string SubProtocol { get; }string Origin { get; }string Host { get; }string Path { get; }string ClientIpAddress { get; }int ClientPort { get; }IDictionarystring, string Cookies { get; }IDictionarystring, string Headers { get; }Guid Id { get; }string NegotiatedSubProtocol { get; }}每次建立的连接Id号是唯一的。 4、服务器接收数据时是否会粘包 经测试同一连接连续向服务器发送数据时每次OnBinary收到的消息是完整的。 还没瞻仰源码后面有空看看server端TCP接收数据时应该是做了包的合并处理接到一个整坨数据才调用的OnBinary。 Unity用户端代码 连发50笔数据每次发送1M bytes int i 0;while (i 50) //连发50笔数据每次发送1M bytes{var bytesArray new byte[1048576]; // 1024 * 1024 1048576await websocket.Send(bytesArray); //或者直接await测试结果一样Debug.Log($发送数据-{i});i;}C#服务端代码 每当收到数据时把收到的数据长度打印出来 socket.OnBinary bytes {Debug.WriteLine($收到二进制数据长度为{bytes.Length}Bytes,来自{socket.ConnectionInfo.ClientIpAddress});};5、同一个ip上有两个应用同时发来信息如何区分这些连接属于哪个用户 简要思路每个用户端启动的时候需要用户名登录建立连接时告诉服务器这个socket是哪个userID的凡是该用户建立连接后台都把该连接绑定到user ID。 1、每次建立连接connection的id是唯一的 2、服务器端维护一个【连接列表】string userID - webSocket sockt如下所示 public class UserSocket {/// summary/// 用户ID/// /summarypublic string userID;/// summary/// socket对象/// /summarypublic IWebSocketConnection socket;/// summary/// 状态true-可用状态 false-断开状态/// /summarypublic bool connected; }userIDsocketconnectedguestsocket1trueuser1socket2trueuser2socket3false………userNsocketMtrue 客户端建立连接的时候发送信息给服务器告诉服务器该连接对应那个用户名。 服务器收到信息后及时更新【连接列表】。 用户端在建立连接的时候发送一个string命令告诉服务器这个连接后面是哪个用户user ID websocket.OnOpen () {Debug.Log(连接成功); websocket.SendText($name#user001); //发送用户id };服务器收到信息的处理 //收到二进制信息 socket.OnBinary bytes {var userName UserSockets.First(x x.socket.ConnectionInfo.Id socket.ConnectionInfo.Id).userID;Debug.WriteLine($收到二进制数据长度为{bytes.Length}Bytes,来自ip:{socket.ConnectionInfo.ClientIpAddress},userID {userName}); };收到信息且识别了是哪个userID发来的 6、本文测试环境 Win10 Unity2021.3.18 VS2019(.NET 5.0)
http://www.tj-hxxt.cn/news/138657.html

相关文章:

  • 怎么做网站主页设计高端网站建设步骤
  • 仿京东网站后台学设计在哪学比较好
  • 做交互网站做一个在线交易网站需要多少钱
  • 色块布局网站首页模板好的公司网站有什么用
  • 亚当学院网站建设视频教程长沙官网seo技术
  • 网站模板套用顺德网页定制
  • 苏州快速建设网站公司深圳建设交易平台官网
  • ui设计网站成品图片如何建立像百度一样的网站
  • 北京seoqq群西安优化外包
  • 专业型网站和个人网站长春商城网站开发
  • 视频网站VIP卡怎么做赠品wordpress电商模板下载
  • 网站开发电脑配置推荐百度关键字搜索量查询
  • 素材网站无水印深圳广告公司招聘
  • 网站开场动画怎么做网站怎么放404页面
  • 全网最低价查询网站娄底网站建设方案
  • 江西景德镇建设厅网站做外汇的网站
  • 网站微信二维码侧边栏漂浮框餐饮logo免费设计
  • 无锡网站排名优化费用2017年网站建设公司
  • 深圳建站的公司上海园区虚拟地址一览表
  • 张家港网站建设做网站徐州网站简介
  • 建工网官方网站wordpress防转载
  • 优化 网站访问速度益阳市网站建设
  • 免费合同模板网站网页设计与网站的关系
  • 河南第一火电建设公司网站一个人制作网站
  • 便利的龙岗网站设计建设和住房保障部 网站
  • 网站开发费 无形资产阿里云 win wordpress 伪静态
  • dedecms医院网站wap模板(橙色)4512345做销售如何在网站上搜集资料
  • 什么APP可以做网站ps软件电脑版
  • 全景网站如何建设重庆网站的建设
  • 网站做下子压缩文件的链接wordpress繁体中文