直接从 socketio 服务器获取连接的 sid?

Get sid of the connection directly from the socketio server?

我正在使用 python-socketio 让服务器通过 websockets 与客户端通信(客户端应用程序使用 socketIO js 客户端库)。

根据文档,我们可以按以下方式处理事件:

@sio.event
def my_event(sid, data):
    # handle the message
    return "OK", 123

如何直接从服务器获取连接的sid?不必将它作为 arg 作为每个发出事件的 js 客户端的第一个参数传递?
Websockets 是双向通信类型,必须有更好的方法,nodejs 的 socket.io 服务器库确实提供了这样的东西,如果我通过客户端或服务器端的 socket.id 属性没有错的话.

PS:我没有使用Flask-socketio包,所以我无法通过request.sid检索到它。
PS2:套接字服务器将与 FastAPI 应用一起托管在 uvicorn 上。

sid 在每次调用事件处理程序时作为第一个参数传递。示例:

@sio.event
def my_event(sid, data):
    pass

@sio.on('my custom event')
def another_event(sid, data):
    pass

文档:https://python-socketio.readthedocs.io/en/latest/server.html#defining-event-handlers