2015-06-30 2 views
2

Я начинаю с колбы и SocketIO с использованием https://github.com/miguelgrinberg/Flask-SocketIO.Регистрация событий сервера с флягой SocketIO

Я хочу отправить строку на сервер флеш-памяти, а затем через SocketIO испустить это на веб-страницу клиента.

Обычно мой проводки код будет выглядеть следующим образом:

@app.route('/index',methods=['POST']) 
def index(): 
    token = request.form['token'] 

Насколько я понимаю, что-то подобное нужно испускать данные от сервера к клиенту страницы следующее:

@socketio.on('event', namespace='/test') 
def test_message(message): 
    emit('my response', {'data': message['data']}, broadcast=False) 

Это не мне ясно, как связать две функции вместе, чтобы на почте значение токена было отправлено клиенту.

Ближайший я могу найти в Документах:

Receiving Messages¶ 
When using SocketIO messages are received by both parties as events. On the client side Javascript callbacks are used. With Flask-SocketIO the server needs to register handlers for these events, similarly to how routes are handled by view functions. 

Как я могу получить эту работу?

ответ

0

Вы правы с вашими предположениями. Во-первых, POST данные в Настой:

.ajax({ 
    url: "{{ url_for('index') }}", 
    method: "POST", 
    data: { 
     token: "value" 
    } 
}); 

Ваш view будет выглядеть

@app.route('/index',methods=['POST']) 
def index(): 
    token = request.form['token'] 
    test_message(dict(data=token)) 
    return '1' 

И ваш JavaScript будет выглядеть как

var socket = io.connect('http://' + document.domain + ':' + location.port + namespace); 
socket.on('connect', function() { 
    socket.emit('my event', {data: 'I\'m connected!'}); 
}); 
socket.on('my response', function(msg) { 
    // do something with msg.data 
}); 
+0

Погрешность я был, когда я снял линию @ socketio.on ('event', namespace = '/ test') из @ socketio.on ('event', namespace = '/ test') def test_message (message): после этого он звезда . Спасибо за объяснение – user61629

+0

Жаль, что я имел в виду «исправлена ​​ошибка», а не «ошибка, – user61629