SocketIOイベントコンテキストからソケットメッセージを外部に送信しようとすると、メッセージはクライアントに届きません。コンテキストの外側Flask SocketIOイベントコンテキストから外部にイベントを送信する
方法:
@main.route('/import/event', methods=['POST'])
def update_client():
from .. import socketio
userid = request.json['userid']
data = request.json
current_app.logger.info("New data: {}".format(data))
current_app.logger.info("Userid: {}".format(userid))
socketio.emit('import', data, namespace='/events', room=userid)
return 'ok'
私も試みた:方法update_clientが呼び出される
@socketio.on('connect', namespace='/events')
def events_connect():
current_app.logger.info("CONNECT {}".format(request.namespace))
userid = request.sid
current_app.clients[userid] = request.namespace
'on.connect' SocketIOコンテキストに
with current_app.app_context():
socketio.emit('import', data, namespace='/events', room=userid)
スレッドから。クライアント側で
:
$(document).ready(function(){
var socket = io.connect('http://' + document.domain + ':' + location.port +'/events');
var userid;
socket.on('connect', function() {
console.log("on connect");
});
socket.on('import', function (event) {
console.log("On import" +event);
});
私は、メッセージがクライアントに到着し、ログメッセージがプリントされ@socketio.on('connect')
方法でemit('import', 'test')
を呼び出します。
ドキュメントの例があります:
@app.route('/ping')
def ping():
socketio.emit('ping event', {'data': 42}, namespace='/chat')
私は何かを欠場か、なぜクライアントでメッセージ到着していませんか?
編集:
socketioが
socketio = SocketIO()
create_app():
app = Flask(__name__)
socketio.init_app(app)
manage.py
from app import socketio
if __name__ == '__main__':
socketio.run(app)
フラスコSocketIOの== 2.6
eventlet app/__init__.py
関数で作成され== 0.19。 0