网站建设赚钱吗排版设计是什么工作

news/2025/9/29 14:27:17/文章来源:
网站建设赚钱吗,排版设计是什么工作,广州网站设计公司济南兴田德润o简介图片,嵌入式软件开发工程师是做什么的基于WebSocket实现的后台服务#xff0c;用于接收客户端的心跳消息#xff0c;并根据心跳消息来维护客户端连接。 具体实现中#xff0c;服务启动后会创建一个HttpListener对象#xff0c;用于监听客户端的WebSocket连接请求。当客户端连接成功后#xff0c;服务会为每个…基于WebSocket实现的后台服务用于接收客户端的心跳消息并根据心跳消息来维护客户端连接。 具体实现中服务启动后会创建一个HttpListener对象用于监听客户端的WebSocket连接请求。当客户端连接成功后服务会为每个连接创建一个Task实例用于接收客户端发送的心跳消息并根据心跳消息更新心跳时间戳。服务还会定期向客户端发送心跳消息以保持连接的活跃状态。 如果服务在一定时间内没有收到客户端发送的心跳消息就会认为客户端已经掉线服务会关闭连接并从连接列表中移除该客户端。 此服务适用于需要实现长连接的场景例如实时消息推送、在线游戏等。需要注意的是此服务只能用于WebSocket通信客户端必须实现WebSocket协议。 using Microsoft.Extensions.Hosting; using MSEBP.Kernel.Common.Logging; using System; using System.Collections.Concurrent; using System.Linq; using System.Net; using System.Net.Sockets; using System.Net.WebSockets; using System.Text; using System.Threading; using System.Threading.Tasks;namespace Authorization.WebApi {/// summary/// 此代码只能用于 websocket通信,客户端必须websocket实现暂时无用。/// /summarypublic class WebSocketBackgroundService : IHostedService, IDisposable{private const int _heartBeatInterval 30000; // 心跳间隔毫秒private const int _heartBeatTimeout 60000; // 心跳超时时间毫秒private const int _clientIdLength 10;private readonly CancellationTokenSource _cts new CancellationTokenSource();private readonly ConcurrentDictionarystring, WebSocket _clients new ConcurrentDictionarystring, WebSocket();private readonly ILogger _logger;/// summary/// /// /summary/// param namelogger/parampublic WebSocketBackgroundService(ILogger logger){_logger logger;}/// summary/// /// /summary/// param namecancellationToken/param/// returns/returnspublic async Task StartAsync(CancellationToken cancellationToken){IPAddress localIp Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(ip ip.AddressFamily AddressFamily.InterNetwork);if (localIp null){throw new Exception(Cannot find local IP address.);}IPEndPoint localEndPoint new IPEndPoint(localIp, 8181);HttpListener listener new HttpListener();//listener.Prefixes.Add($http://{localEndPoint}/);listener.Start();_ Task.Run(async () {try{while (!_cts.IsCancellationRequested){HttpListenerContext context await listener.GetContextAsync();if (context.Request.IsWebSocketRequest){WebSocket webSocket await AcceptWebSocketAsync(context);_ Task.Run(async () {await ReceiveHeartbeatAsync(webSocket);}, _cts.Token);}else{context.Response.StatusCode 400;context.Response.Close();}}}catch (Exception ex){_logger.Error(ex, WebSocket server error.);}}, _cts.Token);}private async TaskWebSocket AcceptWebSocketAsync(HttpListenerContext context){HttpListenerWebSocketContext wsContext await context.AcceptWebSocketAsync(null);WebSocket webSocket wsContext.WebSocket;return webSocket;}private async Task ReceiveHeartbeatAsync(WebSocket webSocket){byte[] buffer new byte[1024];CancellationToken token _cts.Token;DateTime lastHeartbeatTime DateTime.UtcNow;try{while (webSocket.State WebSocketState.Open !token.IsCancellationRequested){WebSocketReceiveResult result await webSocket.ReceiveAsync(new ArraySegmentbyte(buffer), CancellationToken.None);if (result.CloseStatus.HasValue){await CloseWebSocketAsync(webSocket, result.CloseStatus.Value, result.CloseStatusDescription);break;}else if (result.MessageType WebSocketMessageType.Text){string message Encoding.UTF8.GetString(buffer, 0, result.Count).Trim();if (message.StartsWith(heartbeat)){lastHeartbeatTime DateTime.UtcNow;string clientId message.Substring(0, Math.Min(message.Length, _clientIdLength));_clients.TryAdd(clientId, webSocket);}else if (string.IsNullOrEmpty(message)){await CloseWebSocketAsync(webSocket, WebSocketCloseStatus.NormalClosure, Closed by client);break;}else{// 处理业务逻辑}}// 检测心跳超时if ((DateTime.UtcNow - lastHeartbeatTime).TotalMilliseconds _heartBeatTimeout) { await CloseWebSocketAsync(webSocket, WebSocketCloseStatus.NormalClosure, Heartbeat timeout);break;}}}catch (WebSocketException ex) when (ex.WebSocketErrorCode WebSocketError.ConnectionClosedPrematurely){// WebSocket 连接被意外关闭忽略异常}catch (Exception ex){_logger.Error(ex, WebSocket error.);}finally{// 移除客户端连接foreach (var item in _clients){if (item.Value webSocket){_clients.TryRemove(item.Key, out _);break;}}await CloseWebSocketAsync(webSocket, WebSocketCloseStatus.NormalClosure, Closed by server);}}private async Task CloseWebSocketAsync(WebSocket webSocket, WebSocketCloseStatus closeStatus, string closeStatusDescription){try{await webSocket.CloseAsync(closeStatus, closeStatusDescription, CancellationToken.None);}catch (WebSocketException ex) when (ex.WebSocketErrorCode WebSocketError.ConnectionClosedPrematurely){// WebSocket 连接已经关闭忽略异常}catch (Exception ex){_logger.Error(ex, Failed to close WebSocket.);}}public async Task StopAsync(CancellationToken cancellationToken){_cts.Cancel();await Task.CompletedTask;}public void Dispose(){_cts.Dispose();}} }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/921893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

h5购物网站模板wordpress 整站源码

1. 初识http HTTP 最新的版本应该是 HTTP/3.0,目前大规模使用的版本 HTTP/1.1; 下面来简单说明一下使用 HTTP 协议的场景: 1、浏览器打开网站 (基本上) 2、手机 APP 访问对应的服务器 (大概率) 前面的 TCP与UDP 和http不同,HTTP 的报文格式&a…

超能力联盟网站乐清网站只做

2019独角兽企业重金招聘Python工程师标准>>> property (nonatomic, assign) CGRect prototypeRect; -----这样的声明应该没有问题的,的if(!self.prototypeRect)报错是因为 CGRect是结构体,不能作非nil判断,你可以利用self.protot…

redis使用lua脚本迁移数据到集群版redis失败怎么解决

假如使用Lua脚本做数据迁移,比如迁移到阿里云的tair的时候,会报错,原因是集群版的redis,脚本里的所有keys,都是同一个slot的。但是redis的slot有16384个,很难保证插入的数据是同一个slot。假如分开不同的slot来插…

【IEEE-CPS出版】2025年数据管理与计算机科学国际学术会议(ICDMCS 2025)

2025年数据管理、计算机科学国际学术会议(ICDMCS 2025),将于2025年10月24-26日在中国江苏省南京市召开。【高录用快见刊、检索:合作IEEE-CPS出版社审稿录用速度快,最快投稿后2-4个月左右见刊,见刊后1个月左右EI、S…

详细介绍:医疗编程AI技能树与培训技能树报告(国内外一流大学医疗AI相关专业分析2025版,下)

详细介绍:医疗编程AI技能树与培训技能树报告(国内外一流大学医疗AI相关专业分析2025版,下)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !imp…

实用指南:Unity单元测试:C语言轻量级框架实战

实用指南:Unity单元测试:C语言轻量级框架实战pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

做网站可能遇到的困难做站群的网站要备案吗

1查看数据情况 df.shape df.info() 2.用指定值填充 df df.fillna(x) 3.判断是否缺失 df.isnull() 4.删除缺失数据 df df.dropna() 5.补充平均值 df df.fillna(df.mean()) 6.填充他前面一个元素值(ffill向前填充,bfill向后填充)(limit:可以…

网站上不去首页seo要怎么办wordpress 补丁

基本介绍 Java Agent是一种特殊的Java程序,它允许开发者在Java虚拟机(JVM)启动时或运行期间通过java.lang.instrument包提供的Java标准接口进行代码插桩,从而实现在Java应用程序类加载和运行期间动态修改已加载或者未加载的类,包括类的属性、…

免费的网站域名商业网站案例

基于Docker for Windows部署ChatGPT-Next-Web 项目地址安装Docker for Windows部署项目参数讲解参数示例 运行 项目地址 https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web 安装Docker for Windows 官网地址:https://www.docker.com/ 下拉找到Download 选择W…

【ACM出版】第五届管理科学和软件工程国际学术会议(ICMSSE 2025)

第五届管理科学和软件工程国际学术会议(ICMSSE 2025)将于2025年10月24-26日于南京召开。【高届数、范围广、录用高、见刊快、检索稳】 【管理科学、软件工程、计算机相关主题方向均可投稿】 第五届管理科学和软件工程国…

PiXYZ Studio 2021下载地址与安装教程

软件介绍 PiXYZ Studio 2021是Unity公司推出的专业3D数据准备与优化工具,专为处理复杂CAD、3D和点云模型设计。该版本通过集成自动化批处理、实时协作与跨平台兼容功能,显著提升工业设计与实时3D开发的效率。其核心功…

coremail日常操作

客户端下载: https://www-lunkr.coremail.cn/download.html#email 创建测试用户: 登录webadmin,点组织管理-用户管理,新建用户

很多网站开发没有框架如何制作的如何 做网站挣钱

wow代码人们让钱包瑟瑟发抖的双十一已经来啦与此同时码不停蹄地向你奔赴而来的还有 CSDN 为你准备的???? 1 元秒杀 ????价值 3.5 万元的爆款电子书限时特惠,仅需 1 元你,准备好了吗仅限 1000 人速领????????????错过悔10年系列好书

Win 10 LSTC 使用 Podman - tfel

小记一下 Win 10 LTSC 上运行 WSL, Podman 相关的知识前言全文仅为个人折腾记录因为需要跑 docker,发现自己的电脑上还没有装。加上先前在网上看到有人对比 Docker 和 Podman以及之前自己使用 Colima 的记忆, 决定用 …

深入解析:在 C# .NETCore 中使用 MongoDB(第 2 部分):使用过滤子句检索文档

深入解析:在 C# .NETCore 中使用 MongoDB(第 2 部分):使用过滤子句检索文档2025-09-29 14:03 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflo…

网站开发知乎wordpress进入

如图所示,在公式后面加编码后公式也变小了: 加编码前: 加编码后: 采用样式分隔符(Ctrlaltenter)即可解决,输完公式后,按enter转行,输入你要的东西(编号什么的…

电脑和手机都能浏览的网站开发网站开发后端需要哪些技术

来源 | 扔物线责编 | Carol文章开始之前,首先来看个视频:开始说到依赖注入,做 Android 的人都会想到一个库:Dagger;说到 Dagger,大家的反应普遍是一套三连:牛逼、高端、我才不用。又牛逼又高端&…

商丘做网站的公司肇庆企业做网站

点击上方蓝字关注我们!因为分享,我们相遇在SEO路上“网站上线一段时间了,为什么没有流量?为什么没有询盘?”对于做网络营销的企业而言,网站流量与询盘是建立网站的根本目的,可是为什么操作了一段…

网站后台信息发布这样做网站开发工具介绍

455.分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有…

手机怎么做网站添加背景音乐chrome手机版

.net famework3.5中新增加了一个关于时区的静态类,可以使得我们方便的操作与时区相关的信息 下面的内容是摘自MSDN的信息,注意:这个类是Beta2中的类,至于Release后是否改变还不知道。由于电脑中没有安装英文正式版的MSDN,所以只能…