【问题标题】:Get sid of the connection directly from the socketio server?直接从socketio服务器获取连接的sid?
【发布时间】:2021-07-14 17:45:38
【问题描述】:

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

从文档中,我们可以通过以下方式处理事件:

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

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

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

【问题讨论】:

    标签: websocket socket.io fastapi python-socketio


    【解决方案1】:

    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

    【讨论】:

    • 确实是的,对此感到抱歉,我刚刚意识到我被误导了,因为我也将token 有效负载传递给我的大多数事件,以为我没有捕捉到sid,但它确实做到了sid
    猜你喜欢
    • 2019-07-14
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    相关资源
    最近更新 更多