如何断开自定义事件python套接字



我有两个处理程序:

@sio.event
async def connect(sid, environ):
print('connect', sid)
@sio.event
async def disconnect(sid, environ):
# perform some user management stuff
# perform some cleaning as well
print('disconnect', sid)

我想触发disconnect事件处理程序(因为我想在断开连接时执行一些特定的操作),但是在一个名为leaveWorkbench的自定义事件上。

  • sio.disconnect()协程实际上调用偶数处理程序disconnect吗?
  • 我应该发出一个事件disconnect这样:
@sio.event
async def leaveWorkbench(sid):
await sio.emit('disconnect')

(从文档中看来不是个好主意,因为"reserved"(?) +它会被客户端捕获,所以可能不是一个有效的解决方案)

  • 或者我应该简单地把事件处理程序作为一个方法?使用sio.discconect
async def disconnect_handler(sid):
# operations to be performed on disconnection
await sio.disconnect(sid)??
@sio.event
async def leaveWorkbench(sid):
await disconnect_handler(sid)
@sio.event
async def disconnect(sid):
await disconnect_handler(sid)
  • 最后,其他"清洁器"选择呢?重要提示:我在断开连接时使用session对象

正确的方法是调用sio.disconnect(sid)

但是注意,disconnect()方法只是启动一个断开连接,然后在后台发生。受影响的客户端的断开连接处理程序最终将被调用,但它可能不是立即的(即可能需要一两秒钟)。客户端也将被通知它正在断开连接。

最新更新