我正在尝试从服务器到客户端接收当前抽屉的ID。这就是我到目前为止所得到的
客户端:
socket.emit('returnDrawer');
socket.on('returnDrawer', function(ret)
{
console.log("id:", ret);
})
服务器:
socket.on('returnDrawer', function() {
return users[currentDrawer].ioid;
});
但是当前的抽屉ID根本没有调用我的客户端回调,可以使用一些帮助。
答案 0 :(得分:1)
您可以将回调函数作为参数发送给emit()。这是我的一个项目中的一个例子。没有抽屉,只有动画。
客户端
socket.emit('animate', 'text', payload, (response) => {
console.log(response);
});
服务器端
socket.on('animate', (animation, payload, callback) => {
callback = typeof callback == "function" ? callback : () => {};
try {
this.runAnimation(animation, payload);
callback({status:'OK'});
}
catch(error) {
callback({error:error.message});
}
});
答案 1 :(得分:0)
您尝试过类似的事情吗:
客户
socket.emit('giveMeDrawer');
socket.on('returnDrawer', function(ret) {
console.log("id:", ret);
})
服务器
socket.on('giveMeDrawer', function() {
socket.emit('returnDrawer', users[currentDrawer].ioid);
});
或遵循this指南(来自socket.io文档)。
答案 2 :(得分:0)
您可以使用不同的事件名称进行发送和接收。这将帮助您将来更好地扩展。
例如,上面的代码可以写成:-
// implementing client side
socket.emit('returnDrawer');
socket.on('returnDrawerResponse', function(message) {
console.log('id', message)
});
对于服务器端,您可以这样写:
// implementing server side
socket.on('returnDrawer', function(){
// write Your awesome code here
const userId = users[currentDrawer].ioid()
socket.emit('returnDrawerResponse', userId)
})