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

php网站怎么注入做网站建设销售员准备什么

php网站怎么注入,做网站建设销售员准备什么,如何做一个电商,膳食管理东莞网站建设技术支持错误报告#xff1a;WebSocket 设备连接断开处理问题 项目背景 设备通过自启动的客户端连接到服务器#xff0c;服务器将设备的 mac_address 和设备信息存入 Redis。前端通过 Redis 接口查看设备信息并展示。 问题描述 设备连接到服务器后#xff0c;前端无法立即看到设…错误报告WebSocket 设备连接断开处理问题 项目背景 设备通过自启动的客户端连接到服务器服务器将设备的 mac_address 和设备信息存入 Redis。前端通过 Redis 接口查看设备信息并展示。 问题描述 设备连接到服务器后前端无法立即看到设备信息。 发现的问题 设备连接后直接关机在设备关机的情况下服务器未及时收到断开连接的信号。由于 TCP Keep-Alive 的机制测试中发现需要约 45 秒才会自动触发断开连接。设备重新开机设备重新启动后重新连接服务器。此时服务器加速了断开连接的触发约 28 秒但是服务器错误地删除了 Redis 中的记录。实际上设备的连接并没有真正断开。通过向 Redis 中重新写入相同的信息验证了 Redis 中的设备信息并未真正丢失。 目前的处理方式 为了应对上述问题做了以下改进 增加了校验机制当服务器接收到断开连接时增加了对 Redis 中存储的设备信息的检查。心跳机制为了更好地管理连接预留了一个 PingPong 心跳机制用于检测连接的有效性。由于设备端版本原因并不全支持 pong 回应暂时未启用这个机制预留了一个 heartbeat ping 的函数但它不响应 pong后续有需要可以进一步完善。 处理方法 在 disconnect 方法中增加了校验机制以确保只有在正确的条件下删除 Redis 中的设备信息。 staticmethod async def disconnect(ws: WebSocket, client: AsyncRedis, mac_address: str) - None:remote_ip, remote_port ws.clientcurrent_client_info await client.hget(settings.REDIS_WS_CLIENT_KEY, mac_address)current_client_info json.loads(current_client_info)if current_client_info:logger.info(fWS_LIFESPAN: {mac_address} 正在清除状态)# 如果没有 remote port那么说明这个链接异常可以直接清理current_remote_port current_client_info.get(remote_port, remote_port)# 如果旧的 ws client port 等于现在的 port说明存储的信息仍然是当前链接的信息可以删除if current_remote_port remote_port:await WsService.remove_client(client, mac_address)logger.info(fWS_LIFESPAN: {mac_address} 清除状态完成)else:logger.info(fWS_LIFESPAN: {mac_address} 当前连接已被新连接替代跳过清理)else:logger.info(fWS_LIFESPAN: {mac_address} 未在 Redis 中找到客户端记录跳过清理)预留的 heartbeat 如下 async def send_heartbeat():心跳检测- 目前只在服务器单方面检测- 如果 ping 发送失败则认为断线关闭连接while True:await asyncio.sleep(PING_INTERVAL)try:ping_msg {action: ping, timestamp: get_current_datetime_str()}await ws.send_text(json.dumps(ping_msg))logger.info(fWS_LIFESPAN: {mac_address} 发送ping)except Exception as e:logger.error(fWS_LIFESPAN: {mac_address} 发送ping消息失败连接可能已断开: {str(e)})break# 启动心跳检测任务# heartbeat_task asyncio.create_task(send_heartbeat())在 client 端中预留了一个 pong 机制如下 client 0.2.1 async def handle_ping(ws: WebSocketClientProtocol, **params):处理 Ping返回 Pongpong_msg {action: pong}await ws.send(json.dumps(pong_msg))解决方案 TCP Keep-Alive 设置可以考虑调整 TCP Keep-Alive 设置以加快服务器检测到设备断开的速度从而减少等待时间。 这会影响整个设备的 TCP Keep Alive尽量不进行心跳机制进一步完善 PingPong 心跳机制确保定时检查连接是否有效。如果检测到设备失去连接可以更快地清除 Redis 中的记录。断开连接的逻辑加强在断开连接的逻辑中增加更多的校验确保只有当设备断开并且确实不再连接时才从 Redis 中移除其信息。 总结 通过对 WebSocket 断开连接的处理逻辑进行增强增加了对 Redis 存储的校验机制可以有效避免由于设备重新启动时错误地删除 Redis 中的设备信息。此外心跳机制的加入也进一步提升了连接的管理效率。
http://www.hkea.cn/news/14394073/

相关文章:

  • 网站如何做流媒体如何在外管局网站上做延期
  • 门户网站开发工具软件施工企业工作分解结构
  • 做饲料的专业网站如何建立和设计公司网站作文
  • 网站策划中规划预测怎们做微网站建设 上海
  • 网页制作工具的选择与网站整体风格是有关系吗WordPress写文章本地上传
  • 公司主页网站制作榆林高端网站建设如何设计
  • wordpress 个人网站大千科技网站建设
  • 网站制作流程有哪些步骤?安徽省通信建设管理局网站
  • 大良营销网站建设价格wordpress服务器配置文件
  • 做网站需要网站负责人小程序开发制作官网
  • wordpress用哪个国外空间企业网站关键词优化
  • 北京响应式的网站设计重庆九龙网站建设
  • 具有营销型网站有哪些网站到期续费通知
  • 网站包括什么wordpress自定义文章排序
  • 网站管理助手 二级域名免费空间asp网站
  • 网站页面设计内容网络营销推广的目的
  • seo网站推广的主要目的包括网址导航网站简单制作
  • 柳州房地产网站建设杭州网站制作模板
  • 网站设计的设计方案找工作室的网站
  • 个人网页简历苏州做网站优化
  • 重庆网站建设培训机构学费网站开发 有哪些优化功能
  • 网站建设按什么合同交印花税中企动力优秀网站
  • 金华网站制作费用数字今天科技 网站
  • 温州网站建设方案托管网站开发需要哪些硬件
  • 网站的域名怎么起如何自己弄网站
  • 网站多少图片怎么做超链接佛山网站推广seo
  • 网站和网店的区别wordpress自定义目录
  • 阿里域名购买网站大连零基础网站建设教学公司
  • php 网站开发框架互联网建站是什么
  • 长春建站优化加徽信xiala5免费个人简历模板表格下载