我到处都找过了,但很难找到解释,我不知道是我忽略了什么,还是它的功能不符合我的期望。
从客户端接收到 "my event "后,有一个 "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)
但是,我从来没有看到 "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();
})
文档 也是很有帮助的。