2016-04-26 21 views
2

Ich habe einen Python-Server mit Flask, die eine Websocket-Verbindung mit Flask-SocketIO hat. Es gibt eine ähnliche Frage: Send custom data along with handshakeData in socket.io? Die Idee ist, das gleiche zu tun, aber anstelle von Node, mit Flask. Ich mag der Kunde einige Daten in dem Connect-Ereignisse zu senden, zum Beispiel:Benutzerdefinierte Handshake-Daten mit Flask-SocketIO

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

Ich habe nicht in der Lage gewesen, die benutzerdefinierten Daten zu bekommen, und ich kann nicht wegen des Klienten Rahmen auf Cookies verlassen. Eine funktionierende Lösung besteht darin, das connect-Ereignis wie üblich zu haben und dann in einem benutzerdefinierten Ereignis diese Informationen als Payload zu erhalten. Aber was wir wollen, ist nur ein Connect Event zu machen. Vielen Dank!

+2

Haben Sie versucht, in Ihrem Connect-Handler auf 'request.args' zuzugreifen? Ich denke, das sollte Ihnen Ihre Abfragezeichenfolgenargumente geben. – Miguel

Antwort

1

Wie Miguel in seinem Kommentar vorgeschlagen, dass Sie einfach

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) 

auf der Server-Seite tun können.