我到处找过,但很难找到对此的解释,我不确定我只是忽略了某些东西还是它只是没有按照我期望的方式运行。
在收到来自客户端的"我的事件"后,响应会传递一个"messageReceived"回调:
def messageReceived(methods=['GET', 'POST']):
print('message was received!!!')
@socketio.on('my event')
def handle_my_custom_event(json, methods=['GET', 'POST']):
print('received my event: ' + str(json))
socketio.emit('my response', json, callback=messageReceived)
但是,我从未看到"消息已接收"函数在服务器上执行? 我希望在服务器的命令提示符下某处看到"收到消息!!但我没有。 是否需要从客户端发回一些东西才能执行回调,还是应该自动发生? 其他一切都如您所料。
这是客户端的javascript:
socket.on('my response', function( msg ) {
console.log( msg )
if( typeof msg.user_name !=='undefined') {
$('h3').remove()
$('div.message_holder').append('<div><b style="color: #000">'+ msg.user_name +'</b> '+ msg.message +'</div>')
}
})
问题是回调不是从客户端自动的。 将其添加到客户端 javascript 中,现在一切按预期工作:
socket.on('my response', function( msg, callback ) {
console.log( msg )
if( typeof msg.user_name !=='undefined') {
$('h3').remove()
$('div.message_holder').append('<div><b style="color: #000">'+ msg.user_name +'</b> '+ msg.message +'</div>')
}
callback();
})
文档也很有帮助。