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客户端的消息时,它会将该消息广播

相关内容

热门资讯

重大通报!卡农大厅辅助,wep... 您好,卡农大厅辅助这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这款...
一分钟了解!川娱竞技血战辅助器... 一分钟了解!川娱竞技血战辅助器,约局吧德州可以透视吗,玩家教你(真是有挂);暗藏猫腻!川娱竞技血战辅...
最新技巧!广丰510k辅助插件... 最新技巧!广丰510k辅助插件,wepoker游戏下载,德州教程(有挂讲解);人气非常高,ai更新快...
一分钟秒懂!微信小程序雀神广东... 您好:微信小程序雀神广东智能辅助这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很...
重大通报!微信小程序透视挂,w... 重大通报!微信小程序透视挂,wepoker黑侠辅助器,透视教程(有挂细节)是一款可以让一直输的玩家,...
重大来袭!同城游辅助器软件下载... 重大来袭!同城游辅助器软件下载,wepoker私人局外卦,第三方教程(有挂总结);小薇(透视辅助)致...
分享一款!哈局八张有没有透视挂... 您好:哈局八张有没有透视挂这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户...
盘点一款!杭州边锋网络游戏辅助... 盘点一款!杭州边锋网络游戏辅助,pokemmo手机脚本辅助器,透明教程(有挂秘诀);杭州边锋网络游戏...
玩家必看教程!闲逸辅助软件下载... 玩家必看教程!闲逸辅助软件下载苹果,智星德州插件最新版本更新内容详解,实用技巧(新版有挂);一、闲逸...
总算了解!四川辅助软件,wep... 【福星临门,好运相随】;总算了解!四川辅助软件,wepoker透视版下载,AI教程(有挂技术);暗藏...