修复: emit 未 await aiohttp 协程, 走子/匹配帧全部丢失
This commit is contained in:
1 parent
adf3abb5fc
commit
ddcf8c4bec
1 file changed
+6
-6
+6
-6
@@ -55,11 +55,11 @@ class OnlineBot:
|
||||
self._send_lock = asyncio.Lock()
|
||||
|
||||
# ---------- 基础 ----------
|
||||
def emit(self, event, data, ack=False):
|
||||
async def emit(self, event, data, ack=False):
|
||||
self._ack += 1
|
||||
n = self._ack if ack else ''
|
||||
payload = json.dumps([event, data], ensure_ascii=False)
|
||||
return self.ws.send_str(f'42{NS},{n}{payload}')
|
||||
await self.ws.send_str(f'42{NS},{n}{payload}')
|
||||
|
||||
def my_name(self):
|
||||
try:
|
||||
@@ -113,7 +113,7 @@ class OnlineBot:
|
||||
return
|
||||
if raw.startswith('40'):
|
||||
log.info('[ws] joined /xiangqi')
|
||||
self.emit('lobby.join', {'room': 'lobby'})
|
||||
await self.emit('lobby.join', {'room': 'lobby'})
|
||||
if not self.args.game:
|
||||
await asyncio.sleep(1)
|
||||
asyncio.create_task(self.quick_challenge())
|
||||
@@ -133,9 +133,9 @@ class OnlineBot:
|
||||
if event == 'lobby.my.game.new':
|
||||
self.game_id = data.get('game_id')
|
||||
log.info('[game] matched %s', self.game_id)
|
||||
self.emit('lobby.left', {})
|
||||
await self.emit('lobby.left', {})
|
||||
await asyncio.sleep(0.3)
|
||||
self.emit('g_v2.get', {'game_id': self.game_id}, ack=True)
|
||||
await self.emit('g_v2.get', {'game_id': self.game_id}, ack=True)
|
||||
elif event == 'game.get.success':
|
||||
d = data.get('data', {})
|
||||
me = self.my_name()
|
||||
@@ -227,7 +227,7 @@ class OnlineBot:
|
||||
self.last_move_at = asyncio.get_event_loop().time()
|
||||
think_ms = int((asyncio.get_event_loop().time() - t0) * 1000)
|
||||
log.info('[game] %s: %s → %s %s %dms', source, mv, site_mv, score, think_ms)
|
||||
self.emit('g_v2.move', {'game_id': self.game_id, 'move': site_mv,
|
||||
await self.emit('g_v2.move', {'game_id': self.game_id, 'move': site_mv,
|
||||
'thinking_time': think_ms})
|
||||
except Exception as e:
|
||||
log.error('[move] %s: %s', type(e).__name__, e)
|
||||
|
||||
Reference in new issue
Block a user