理解套接字.io回调



我试图使某些websocket发出接收双向通信,所以如果消息从客户端丢失,客户端重试,并与服务器相同。我对回调不是很熟悉,我所读到的只是它们存在,你可以使用它们,但我找不到任何如何使用它们的好例子,或者我不理解这些例子。

这就是我现在的代码

在index . html

<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
namespace = '/socket';
// Connect to the Socket.IO server.
// The connection URL has the following format:
//     http[s]://<domain>:<port>[/<namespace>]
var socket = io.connect(location.protocol + '//' + document.domain + ':' + location.port + namespace);
// Event handler for new connections.
// The callback function is invoked when a connection with the
// server is established.
socket.on('connect', function() {
isopen = true;
socket.emit('join_room');
});
});
});

</script>

在socks.py

@socketio.on('join_room', namespace='/socket')
def on_room():
if 'uid' not in session:
session['uid'] = str(uuid.uuid4())
room = str(session['uid'])
print('join room {}'.format(room))
join_room(room)

所以在这个例子中,客户端html代码发出join_room,我希望客户端验证服务器已经接收到它,如果没有尝试再次发出join_room。

这必须在两个方向上发生。

有办法做到这一点吗?

你可以在你的emit调用中添加一个回调:

socket.emit('join_room', () => { console.log('callback received!'); });

如果您希望服务器在回调中传递信息,那么在服务器处理程序中添加一条返回语句:

@socketio.on('join_room', namespace='/socket')
def on_room():
if 'uid' not in session:
session['uid'] = str(uuid.uuid4())
room = str(session['uid'])
print('join room {}'.format(room))
join_room(room)
return 42

然后无论服务器返回什么都作为参数传递给你的回调:

socket.emit('join_room', (arg) => { console.log('callback received with ' + arg); });

相关内容

  • 没有找到相关文章

最新更新