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

合肥正规制作网站公司上海网站建设品牌

合肥正规制作网站公司,上海网站建设品牌,江门网站建设价格,做的网站在百度上搜不出来的一、WebSocket 简介 WebSocket 是一种基于 TCP 的协议,支持全双工通信(服务器和客户端可以同时发送消息),适用于实时性要求高的场景(如聊天、实时数据监控、在线游戏等)。与 HTTP 不同,WebSock…

一、WebSocket 简介

WebSocket 是一种基于 TCP 的协议,支持全双工通信(服务器和客户端可以同时发送消息),适用于实时性要求高的场景(如聊天、实时数据监控、在线游戏等)。与 HTTP 不同,WebSocket 连接一旦建立,会保持持久化,避免了 HTTP 轮询的开销。


二、Python 的 websockets

websockets 是 Python 中用于构建 WebSocket 服务器和客户端的异步库,基于 asyncio 实现,支持高并发和低延迟通信。

安装
pip install websockets

三、完整代码示例

1. WebSocket 服务器
import asyncio
import websockets
from datetime import datetime# 保存所有活跃的客户端连接
connected_clients = set()async def handle_client(websocket, path):"""处理单个客户端连接"""# 将新客户端添加到集合connected_clients.add(websocket)try:async for message in websocket:# 广播消息给所有客户端timestamp = datetime.now().strftime("%H:%M:%S")broadcast_message = f"[{timestamp}] {message}"await broadcast(broadcast_message)except websockets.exceptions.ConnectionClosed:print("客户端断开连接")finally:# 客户端断开后移除connected_clients.remove(websocket)async def broadcast(message):"""向所有连接的客户端广播消息"""if connected_clients:await asyncio.gather(*[client.send(message) for client in connected_clients])async def start_server():"""启动 WebSocket 服务器"""async with websockets.serve(handle_client, "localhost", 8765):print("服务器已启动,监听端口 8765...")await asyncio.Future()  # 永久运行if __name__ == "__main__":asyncio.run(start_server())
2. WebSocket 客户端
import asyncio
import websocketsasync def client():"""WebSocket 客户端实现"""async with websockets.connect("ws://localhost:8765") as websocket:# 创建两个任务:一个接收消息,一个发送消息receive_task = asyncio.create_task(receive_messages(websocket))send_task = asyncio.create_task(send_messages(websocket))await asyncio.gather(receive_task, send_task)async def receive_messages(websocket):"""接收服务器消息"""async for message in websocket:print(f"\n收到消息: {message}")async def send_messages(websocket):"""发送用户输入的消息"""while True:message = await asyncio.get_event_loop().run_in_executor(None, input, "输入消息 (输入 'exit' 退出): ")if message.strip().lower() == 'exit':breakawait websocket.send(message)if __name__ == "__main__":asyncio.run(client())

四、代码详解

服务器端
  1. connected_clients:使用集合保存所有活跃连接,便于广播。
  2. handle_client
    • 接受新连接并添加到集合。
    • 循环接收客户端消息,收到后调用 broadcast 广播。
    • 处理连接断开异常,确保客户端被移除。
  3. broadcast:使用 asyncio.gather 并发向所有客户端发送消息。
  4. start_server:启动服务器并永久运行。
客户端
  1. client:连接服务器并启动收发任务。
  2. receive_messages:循环接收服务器消息并打印。
  3. send_messages:读取用户输入,发送到服务器(run_in_executor 用于异步处理阻塞的 input)。

五、运行与测试

  1. 启动服务器
    python server.py
    
  2. 启动多个客户端
    python client.py
    
  3. 测试:在任一客户端输入消息,所有客户端都会收到广播。

六、高级用法

  1. 消息协议:可定义 JSON 格式的消息,添加类型字段(如 {"type": "chat", "content": "Hello"})。
  2. 认证:在连接时验证 Token(通过 path 参数或首次握手消息)。
  3. 心跳机制:定期发送 Ping/Pong 保持连接活跃。
  4. 集成 FastAPI:结合 ASGI 框架提供 HTTP + WebSocket 混合服务。

七、应用场景

  1. 实时聊天应用
  2. 多人在线游戏
  3. 股票行情推送
  4. 物联网设备监控

八、总结

通过 websockets 库,可以轻松构建高性能的实时应用。本文提供的代码示例覆盖了服务器和客户端的基本实现,注释详细,可直接扩展用于实际项目。

http://www.dtcms.com/a/616543.html

相关文章:

  • 室内设计优秀案例网站网站开发框架图
  • 网站优化要多少钱wordpress表单邮件回复
  • 邯郸做网站的电话购物网站建设 属于信息系统管理与设计么
  • 门户网站如何帮企业做宣传WordPress logo生成
  • 邢台学校网站建设php做不了大型网站吗
  • 做有源代码的网站有什么好处dokuwiki wordpress
  • 东海县建网站东莞企业网络营销平台
  • 电脑配件经营网站的建设论文做网站一月能赚50万吗
  • 网站开发的条件在电脑制作手机网站用什么软件
  • 徐州手机网站优化公司wordpress 块状
  • 课程网站开发背景和意义浙江建设工程合同备案网站
  • 域名进行网站备案吗网站对联广告代码
  • 怎样做月嫂网站wordpress文章发布审核
  • 小榄网站设计德州手机网站建设服务
  • 适合大学生做的兼职网站有哪些厦门网上房地产
  • 下载正品官方网站校园网站建设合同百度文库
  • 简单的网页设计作业360优化大师历史版本
  • 苏州手机网站建设多少钱网站建设有哪些项目
  • 网站建设教程吧加强文明网站内容建设
  • 科技网站欣赏江苏城乡建设官网
  • 企业网站建设开发费用小蘑菇网站建设下载
  • django网站开发逻辑设计dedecms 5.7 关闭网站
  • 做网站建设跑业务建设银行手机银行网站登录
  • 网站分站怎么做登陆建设银行网站异常
  • 网站系统建设架构修网络的上门电话多少
  • 罗湖区做网站的公司网站开发语言 .net
  • 企业网站建设与管理简述行唐县做网站电话
  • 苏州专业网站建设招人制作网站
  • 如何建立网站快捷方式深圳小语种网站建设
  • nim_duilib界面库快速上手(Windows系统,VS 2022)