5

我有一个使用 Flask 的 Python 服务器,它有一个使用Flask-SocketIO的 websocket 连接。有一个类似的问题: Send custom data with handshakeData in socket.io? 这个想法是做同样的事情,但不是使用 Node,而是使用 Flask。我希望客户端在连接事件中发送一些数据,例如:

var socket = io("http://127.0.0.1:3000/", { query: "foo=bar" });

我无法获取该自定义数据,并且由于客户端的框架,我不能依赖 cookie。一个可行的解决方案是像往常一样拥有连接事件,然后在自定义事件中将该信息作为有效负载获取。但我们想要的是只需要做一个连接事件。谢谢!

4

3 回答 3

5

正如米格尔在他的评论中建议的那样,你可以简单地做

from flask import Flask
from flask import request

app = Flask(__name__)
socketio = SocketIO(app)

@socketio.on('connect')
def connect():
    foo = request.args.get('foo')
    # foo will be 'bar' when a client connects

socketio.run(app)

在服务器端。

于 2016-09-26T12:26:03.877 回答
0

全局连接方法在服务器端被调用。但不是我针对特定命名空间的连接方法。命名空间是否支持查询参数?

客户代码

const socket = io.connect('http://127.0.0.1:5000/ds', { query: {name: "Test"} });

服务器代码

@socketio.on('connect', namespace='/ds')
def test_connect():
    foo = request.args.get('foo')
    print("CONNECT DS")
于 2018-04-20T09:35:56.170 回答
0

截至 2021 年的这个时候,您可以使用以下命令从python-socketio客户端发送 Auth 数据

sio.connect('http://localhost:6000/',auth={"authToken":"some auth token"})

于 2021-08-22T23:54:31.337 回答