Socket.io,socket.set()和socket属性之间的区别?

kni*_*ite 13 javascript node.js socket.io

Socket.io建议设置每个套接字变量,如下所示:

socket.set('foo', bar, function () {});

也可以在套接字上设置和访问变量:

socket.foo = bar

使用提供的set()函数有什么好处?

Joh*_*hnP 14

调用socket.foo在套接字对象本身上设置属性.建议不要这样做,因为您可能会覆盖套接字使用和依赖的内部属性.当您调用socket.set()它时,它存储在一个不会与内部属性冲突的内部数据结构中.

https://github.com/LearnBoost/socket.io/blob/master/lib/socket.js#L246

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

  • 同样为了扩展这个答案,get/set/del方法的原因是将键/值传递给适配器,默认情况下这是一个`MemoryStore`,但你可以轻松地将适配器更改为mysql,redis,mongo等等等 (11认同)