以下是使用Python实现的WebSocket服务,支持心跳机制和连接管理:
import asyncio
import websockets
import json
from datetime import datetime
class WebSocketManager:
def __init__(self):
self.connections = set()
self.heartbeat_interval = 30 # 心跳间隔(秒)
self.timeout = 60 # 连接超时时间(秒)
async def register(self, websocket):
self.connections.add(websocket)
print(f"New connection. Total: {len(self.connections)}")
async def unregister(self, websocket):
self.connections.remove(websocket)
print(f"Connection closed. Total: {len(self.connections)}")
async def heartbeat(self, websocket):
while websocket in self.connections:
try:
await websocket.ping()
await asyncio.sleep(self.heartbeat_interval)
except:
await self.unregister(websocket)
break
async def handler(self, websocket, path):
await self.register(websocket)
heartbeat_task = asyncio.create_task(self.heartbeat(websocket))
try:
async for message in websocket:
data = json.loads(message)
if data.get('type') == 'heartbeat':
continue
# 处理业务消息
response = {"status": "success", "data": data}
await websocket.send(json.dumps(response))
finally:
heartbeat_task.cancel()
await self.unregister(websocket)
async def main():
manager = WebSocketManager()
server = await websockets.serve(
manager.handler,
"localhost",
8765,
ping_interval=None # 禁用自动ping
)
print("WebSocket server started at ws://localhost:8765")
await server.wait_closed()
if __name__ == "__main__":
asyncio.run(main())
asyncio
import websockets
import json
async def client():
async with websockets.connect("ws://localhost:8765") as websocket:
# 发送心跳
async def send_heartbeat():
while True:
await asyncio.sleep(10)
await websocket.send(json.dumps({"type": "heartbeat"}))
heartbeat_task = asyncio.create_task(send_heartbeat())
try:
# 发送测试消息
await websocket.send(json.dumps({"message": "Hello"}))
response = await websocket.recv()
print(f"Received: {response}")
# 保持连接
await asyncio.sleep(60)
finally:
heartbeat_task.cancel()
asyncio.run(client())
该实现包含服务端和客户端示例,支持心跳检测、连接管理和异常处理。服务端使用websockets库,通过自定义心跳机制和连接池管理WebSocket连接。
http://www.thedesignrepublic.com/
http://www.yxhgq.com/
http://www.jianhuotech.com/
http://www.bjyozd.com
http://www.sunny-way.cn/
http://www.cnsenkai.com/
http://www.zluren.com.cn/
http://www.cddtk119.com/
http://www.boao168.com.cn/
http://www.czs365.net/
http://www.ianvan.com/
http://www.fangzhoushidai.com
http://www.qiaosen-kj.com
http://gzhyxjj.cn
http://xatlzg.com
http://www.doushiwang.cn
http://www.sxyuanzheng.com
http://www.jwdyd.com
http://www.xaminglang.com
http://www.lboneti.cn
http://www.ahlongda.com
http://www.gdlanye.com
http://www.ktlcutter.com
http://www.hbzfjn.com
http://www.shbaimule.com
http://www.clgzkj.com
http://www.fjjhwy.cn
http://www.goodluck-lift.com
http://www.storlead.shop
http://magicians.com.cn
http://mall.yeepayer.com
http://tzkqzj.com
http://www.jinfanweilai.com
https://www.durkflex.cn/
http://www.szfmhj168.com.cn/
http://hfnz.ahaiba.com/
http://sjmzjypx010.ahaiba.com/
http://nyh.ahaiba.com/
http://thszsgs.com/
https://www.durkflex.cn/
http://www.szfmhj168.com.cn/
http://hfnz.ahaiba.com/
http://sjmzjypx010.ahaiba.com/
http://nyh.ahaiba.com/
http://thszsgs.com/
http://www.mataicomp.com/
http://www.mattei.com.cn/
http://wssyjt.com/
http://www.hbws.cn/
http://wesddc.com/
http://www.shtddaiyun.com/
http://qsyfzl.com/