socket.io socket.set和socket.get - 回调参数是什么?

Kar*_*fer 18 node.js socket.io

我只想将一些变量附加到我的套接字,但我不理解.get和.set方法.他们都有回调的第三个参数.这可以省略吗?它的用途是什么?!回调本身是否会引发争论?

我最好的猜测是,当socket.io没有使用内存存储但是在其他地方保存这些东西并且需要检查回调时出错.

socket.on('set nickname', function (name) {
    socket.set('nickname', name, function (arguments) {
      doSomethingMysterious();
    });
Run Code Online (Sandbox Code Playgroud)

我正在使用socket.io 0.9.x.

该函数在socket.js中定义

/**
 * Stores data for the client.
 *
 * @api public
 */

Socket.prototype.set = function (key, value, fn) {
  this.store.set(key, value, fn);
  return this;
};
Run Code Online (Sandbox Code Playgroud)

cai*_*ike 35

getset插座对象上的功能在1.x版本中被拆除.现在存储和检索值的正确方法是通过套接字对象上的属性,如下所示:

socket.on('set nickname', function (name) {
  socket.nickname = name;
});
Run Code Online (Sandbox Code Playgroud)

正如官方回购示例代码所示.


mih*_*hai 12

set并且get是异步的.完成这些操作后将调用回调.您可以省略它,或者您可以将它用于您喜欢的任何目的,而不仅仅是错误处理.

  • 是的,你使用`set`,`get`(因为只选择在对象中保存一个值)的一个很好的理由是将它保存在db中.实际上`socket.io`似乎已经在`redis store`中构建,但我不是socket.io用户所以我不能真正说出如何使用它.如果你看一下源代码,当调用`set`时,这会把值放在`store`中:https://github.com/LearnBoost/socket.io/blob/master/lib/socket.js#L246 (2认同)