繁体   English   中英

从 socket.io 返回一个值到客户端

[英]Return a value from socket.io to client side

我正在尝试将当前抽屉的 ID 从服务器接收到客户端,用于我正在制作的东西。 这是我到目前为止所得到的

客户:

    socket.emit('returnDrawer');

    socket.on('returnDrawer', function(ret)
    {
        console.log("id:", ret);
    })

服务器:

socket.on('returnDrawer', function() {
    return users[currentDrawer].ioid;
});

但是我的客户端回调根本没有被当前的抽屉 id 调用,可以使用一些帮助。

你有没有试过类似的东西:

客户

socket.emit('giveMeDrawer');

socket.on('returnDrawer', function(ret) {
  console.log("id:", ret);
})

服务器

socket.on('giveMeDrawer', function() {
  socket.emit('returnDrawer', users[currentDrawer].ioid);
});

或遵循指南(来自 socket.io 文档)。

您可以使用不同的事件名称进行发送和接收。 这将帮助您在未来很好地扩展。

例如,上面的代码可以写成:-

// 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)
 })

您可以将回调函数作为参数发送给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});
    }

});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM