我正在尝试使用python网络框架夸脱(带有asyncio功能的烧瓶)制作网络游戏,到目前为止,我拥有服务器和客户端。我有一个断开客户端连接的系统,尽管我有问题。有时(通常是在重新加载页面时)从未触发删除系统。是否还有任何可能影响客户的因素?尽管我不知道会导致什么问题,但更新的客户端似乎更经常出现该问题。
这是我用于在玩家连接/断开连接时添加和删除玩家的系统:
async def wrapper(*args, **kwargs):
global connected
connected.add(websocket._get_current_object())
clientIds.append(player_classes.ID(websocket._get_current_object(), 0))
for IDS in clientIds:
if(IDS.ws == websocket._get_current_object()):
ids.append(str(IDS.id))
try:
return await func(*args, **kwargs)
finally:
for Player in Players:
if(Player.id > 50):
if(Player.ws == websocket):
connected.remove(websocket._get_current_object())
Player.alive = 0
for ID in clientIds:
clientIds.remove(ID)