AsyncioPythonWebSocket服务器有两个WebSocket(其中一个总是关闭连接)
创始人
2024-09-21 07:00:28
0

以下是一个示例代码,可用于创建一个包含两个WebSocket的Asyncio Python WebSocket服务器,并模拟其中一个WebSocket始终关闭连接的情况。

import asyncio
import websockets

# 客户端id列表
client_list = []

async def handle_websocket(websocket, path):
    # 将新连接的客户端id添加到client_list中
    client_id = id(websocket)
    client_list.append(client_id)
    print(f'New connection from client {client_id}')

    try:
        while True:
            # 接收客户端发送的消息
            message = await websocket.recv()
            print(f'Received message from {client_id}: {message}')

            # 广播消息给所有客户端
            for cid in client_list:
                if cid == client_id:
                    continue
                try:
                    # 发送消息给其他客户端
                    await asyncio.wait_for(websockets.connect(f'http://localhost:8000/{cid}'), timeout=5)
                    await websocket.send(f'From {client_id}: {message}')
                except websockets.exceptions.ConnectionClosedError:
                    # 如果连接已关闭,则将其从client_list中删除
                    client_list.remove(cid)

    finally:
        # 如果websocket连接已关闭,则将其从client_list中删除
        client_list.remove(client_id)
        print(f'Connection closed from client {client_id}')

async def main():
    # 创建两个WebSocket
    ws_server = websockets.serve(handle_websocket, 'localhost', 8000)
    ws_client = websockets.connect('ws://localhost:8000/')

    # 在后台启动WebSocket服务器
    async with ws_server:
        await ws_server.start_serving()
    
    # 在后台启动WebSocket客户端
    async with ws_client:
      while True:
          # 持续发送消息到服务器
          await ws_client.send('Hello, world!')

if __name__ == '__main__':
    asyncio.run(main())

由于WebSocket客户端始终保持连接,因此当WebSocket服务器收到来自WebSocket客户端的消息时,它会将该消息广播

相关内容

热门资讯

我来教教你!hhpoker俱乐... 这是一款非常优秀的hhpoker俱乐部是干嘛的 ia辅助检测软件,能够让你了解到hhpoker俱乐部...
透视工具"wepok... 透视工具"wepoker插件下载"详细辅助曝光教程(一直有挂)这是由厦门游乐互动科技有限公司精心打造...
必备攻略!智星德州有脚本吗,w... 1、必备攻略!智星德州有脚本吗,wepoker透视脚本免费app,揭秘攻略(有挂教程)。2、wepo...
透视透视挂"epok... 透视透视挂"epoker透视底牌"详细辅助攻略教程(固有存在有挂)这是由厦门游乐互动科技有限公司精心...
每日必看!hhpoker德州机... 1、每日必看!hhpoker德州机器人,哈糖大菠萝挂,第三方教程(有挂辅助)。2、hhpoker德州...
透视有挂"红龙pok... 透视有挂"红龙poker有辅助吗"详细辅助黑科技教程(一向真的是有挂);亲真的是有正版授权,小编(透...
技巧知识分享!wepoker有... 1、技巧知识分享!wepoker有透视吗,wejoker透视方法,实用技巧(有挂技巧)。2、wejo...
透视新版"wepok... 透视新版"wepoker好友助力码"详细辅助介绍教程(竟然有挂)这是由厦门游乐互动科技有限公司精心打...
今日科普!pokemmo手机脚... 自定义wepoker一直输的号能继续打吗系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑...
透视讲解"拱趴大菠萝... 透视讲解"拱趴大菠萝万能挂图解"详细辅助可靠教程(好像真的是有挂);拱趴大菠萝万能挂图解软件透明挂更...