如何同步服务器端和客户端的socket SID?
How to synchronize socket SID on server and client?
我在客户端上有 python_socketio 5.0.4
,在服务器上有 Flask-SocketIO 5.0.1
。当客户端连接到服务器时,我想在客户端和服务器之间同步客户端的 SID。但是,当我在客户端上打印 SID 时,它与在服务器上打印的 SID 不同。
有什么办法可以让客户端的SID在服务器端和客户端一样吗?
这是客户端的代码:
import socketio
sio = socketio.Client()
sio.connect("http://localhost:5000")
print(sio.sid) # czNJ6NXIAXP9-vgmAAAK
sio.emit("test_event")
这里是服务器:
from flask import Flask, request
from flask_socketio import SocketIO
app = Flask(__name__)
sio = SocketIO(app)
@sio.on("test_event")
def test_event():
print(request.sid) # ukJhK9ZIiXY_gTMAAAL <--- this is different SID
sio.run(app)
问题是您在客户端中以 sio.sid
访问 sid
。 Socket.IO 客户端的 sid
属性 是私有的,不应该被使用。
相反,使用sio.get_sid()
方法获取sid
。这以前不是问题,但是在最新版本的Socket.IO协议中要求每个命名空间有不同的sid
,所以应该使用get_sid()
方法来获取正确的一个用于您的命名空间。
如果您使用的是非默认命名空间,您可以将其作为参数传递,如下所示:sio.get_sid(namespace='/my-namespace')
.
我在客户端上有 python_socketio 5.0.4
,在服务器上有 Flask-SocketIO 5.0.1
。当客户端连接到服务器时,我想在客户端和服务器之间同步客户端的 SID。但是,当我在客户端上打印 SID 时,它与在服务器上打印的 SID 不同。
有什么办法可以让客户端的SID在服务器端和客户端一样吗?
这是客户端的代码:
import socketio
sio = socketio.Client()
sio.connect("http://localhost:5000")
print(sio.sid) # czNJ6NXIAXP9-vgmAAAK
sio.emit("test_event")
这里是服务器:
from flask import Flask, request
from flask_socketio import SocketIO
app = Flask(__name__)
sio = SocketIO(app)
@sio.on("test_event")
def test_event():
print(request.sid) # ukJhK9ZIiXY_gTMAAAL <--- this is different SID
sio.run(app)
问题是您在客户端中以 sio.sid
访问 sid
。 Socket.IO 客户端的 sid
属性 是私有的,不应该被使用。
相反,使用sio.get_sid()
方法获取sid
。这以前不是问题,但是在最新版本的Socket.IO协议中要求每个命名空间有不同的sid
,所以应该使用get_sid()
方法来获取正确的一个用于您的命名空间。
如果您使用的是非默认命名空间,您可以将其作为参数传递,如下所示:sio.get_sid(namespace='/my-namespace')
.