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

一个公司做2个产品网站怎么做的网络营销的手段

一个公司做2个产品网站怎么做的,网络营销的手段,大连seo推广外包,上海网站设计团队HttpServer是一个轻量级Web服务器#xff0c;用于在嵌入式设备以及客户端环境中提供简单Web服务#xff0c;同时也支持标准WebSocket服务。本文例程基于vs2022#xff0c;基础例程可参考#xff1a;https://www.yuque.com/smartstone/nx/httpserverWebSocket服务端WebSocke… HttpServer是一个轻量级Web服务器用于在嵌入式设备以及客户端环境中提供简单Web服务同时也支持标准WebSocket服务。本文例程基于vs2022基础例程可参考https://www.yuque.com/smartstone/nx/httpserverWebSocket服务端WebSocket服务端功能由HttpServer提供只是映射到WebSocket特有的处理器上。vs2022新建.NET6.0控制台项目Nuget引用 NewLife.Core使用以下例程using NewLife.Http; using NewLife.Log; using System;XTrace.UseConsole();var server new HttpServer {Port 8080,Log XTrace.Log,SessionLog XTrace.Log }; server.Map(/ws, new MyWebSocket()); server.Start();Console.ReadLine();class MyWebSocket : IHttpHandler {/// summary处理请求/summary/// param namecontext/parampublic virtual void ProcessRequest(IHttpContext context){var ws context.WebSocket;ws.Handler ProcessMessage;var source new CancellationTokenSource();Task.Run(() consumeMessage(ws, nodeCode, source));WriteLog(WebSocket连接 {0}, context.Connection.Remote);}/// summary处理消息/summary/// param namesocket/param/// param namemessage/parampublic virtual void ProcessMessage(WebSocket socket, WebSocketMessage message){var remote socket.Context.Connection.Remote;var msg message.Payload?.ToStr();switch (message.Type){case WebSocketMessageType.Text:WriteLog(WebSocket收到[{0}] {1}, message.Type, msg);// 群发所有客户端socket.SendAll($[{remote}]说{msg});break;case WebSocketMessageType.Close:WriteLog(WebSocket关闭[{0}] [{1}] {2}, remote, message.CloseStatus, message.StatusDescription);break;case WebSocketMessageType.Ping:case WebSocketMessageType.Pong:WriteLog(WebSocket心跳[{0}] {1}, message.Type, msg);break;default:WriteLog(WebSocket收到[{0}] {1}, message.Type, msg);break;}}private void WriteLog(String format, params Object[] args) XTrace.WriteLine(format, args); } 映射路由/ws到一个自定义处理器MyWebSocket上该处理器包括了 ProcessRequest 和 ProcessMessage 。ProcessRequest。收到WebSocket请求时触发一次此时可验证访问者是否合法例如借助JWT等Token技术。Handler属性设置为ProcessMessage用于处理后续WebSocket消息。ProcessMessage。建立WebSocket握手后每次收到WebSocket消息数据帧都将调用该方法包括二进制、文本、心跳和断开等多种消息类型。Send。发送消息给客户端。SendAll。群发消息给所有客户端。Close。关闭连接。跑起来可以看到仍然是普通HttpServer监听8080端口。保持打开不要关闭下面客户端测试需要用到WebClient客户端借助.NET自身的ClientWebSocket可以轻松构建WebSocket通信。vs2022新建.NET6.0控制台项目Nuget引用 NewLife.Core使用以下例程using NewLife; using NewLife.Data; using NewLife.Log; using System; using System.Net.WebSockets;XTrace.UseConsole();var client new ClientWebSocket(); await client.ConnectAsync(new Uri(ws://127.0.0.1:8080/ws), default); await client.SendAsync(Hello NewLife.GetBytes(), WebSocketMessageType.Text, true, default);var buf new Byte[1024]; var rs await client.ReceiveAsync(buf, default); XTrace.WriteLine(new Packet(buf, 0, rs.Count).ToStr());await client.CloseAsync(WebSocketCloseStatus.NormalClosure, 通信完成, default); XTrace.WriteLine(Close [{0}] {1}, client.CloseStatus, client.CloseStatusDescription);Console.ReadLine(); 建立到服务端的连接后向服务端发送字符串“Hello NewLife”然后使用1024缓冲区接收一次响应数据接着友好断开连接。跑起来查看服务端可以看到服务端ProcessRequest收到了客户端的WebSocket连接请求。两次ProcessMessage第一次收到Text数据帧也就是文本“Hello NewLife”第二次是Close数据帧。客户端也收到了服务端SendAll群发的数据感兴趣的同学可以多开几个客户端试试。物联网平台中使用在物联网平台中设备与服务端建立WebSocket长连接后可以实时下发通知。我们使用消息队列架构如果队列中有消息则通过WebSocket推给设备端。消息大循环结合WebSocket如下 private async Task consumeMessage(WebSocket socket, String node, CancellationTokenSource source){var cancellationToken source.Token;var queue QueueHost.GetQueueString($cmd:{node});try{while (!cancellationToken.IsCancellationRequested){var msg await queue.TakeOneAsync(10_000);if (msg ! null){XTrace.WriteLine(WebSocket发送 {0} {1}, node, msg);socket.Send(msg.GetBytes(), WebSocketMessageType.Text);}else{await Task.Delay(1_000, cancellationToken);}}}catch (Exception ex){XTrace.WriteException(ex);}finally{source.Cancel();}} 再修改 ProcessRequest 握手后异步启动大循环 /// summary处理请求/summary/// param namecontext/parampublic virtual void ProcessRequest(IHttpContext context){var ws context.WebSocket;ws.Handler ProcessMessage;var source new CancellationTokenSource();Task.Run(() consumeMessage(ws, nodeCode, source));WriteLog(WebSocket连接 {0}, context.Connection.Remote);} 借助Redis消息队列每个设备一个Topic对应一个WebSocket连接和消费大循环。注以上代码来自星尘 StarServer。
http://wiki.neutronadmin.com/news/293077/

相关文章:

  • 购物网站开发毕业设计开题报告阳江房产网签数据
  • 网站的推广平台wordpress 页面分栏
  • 教人做衣服的网站wordpress 多产品主图
  • 沈阳网站制作优化设计家装修网站
  • 山东省春季高考网站建设试题海南钢结构网架公司
  • 经营性质的网站国外做二手工业设备的网站
  • 互联网公司网站源码wordpress3d标签插件
  • 手机手机端网站建设广州地铁封闭最新消息
  • 美容网站开发龙华app网站开发
  • 建网站 视频的网址怎么制作网站布局
  • 做情侣网站做视频直播的网站
  • 威海网站建设短信精准群发无锡网页建站公司
  • 国内外建筑设计网站seo优化网站建设
  • 毕业设计网站前端代做望牛墩网站建设
  • 网站流量 盈利网页设计的主题分析
  • 网站首页代码在哪里智能家居网站开发
  • 网站做聚合页面方案如何写公司网址备案能用多少网站
  • 优秀网站特点凡科网站怎么做授权查询
  • 网站读取速度慢网站建立安全连接失败
  • 花生壳怎么做网站河南网站优化哪家好
  • 网站建设实训报告建议做网站导航能赚钱吗
  • 重庆网站建设哪家强做自媒体可利用的国外网站
  • 在线教育网站流量是怎样做的秦皇岛制作网站
  • 玉环市建设局网站秦皇岛汽车网站制作
  • 免费看电视的网站有哪些坦洲网站建设公司
  • 网站建设开发价格怎么算wordpress去除acf
  • 山西省建设局网站建立一个网站需要人员
  • 访问国外网站加速响应设网站多少钱可以做
  • 做外贸主页网站用什么的空间好点做盗版网站吗
  • 前端开发专业山东济南seo整站优化公司