使用Flask-SocketIO自定义握手数据

时间:2016-04-26 12:55:04

标签: python sockets flask flask-socketio

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

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

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

2 个答案:

答案 0 :(得分:1)

正如米格尔在评论中所说,你可以简单地做到

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)

在服务器端。

答案 1 :(得分: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")