0

在 socket.io 中,您可以使用 socket.set 和 socket.get 方法存储和获取与特定客户端关联的数据。但是,您可以简单地在事件处理程序中声明一个 var,on.('connection')如果使用 MemoryStore,它将以与 set/get 相同的方式工作。那有什么区别呢?只有在使用 RedisStore 时 get/set 才有意义吗?

4

1 回答 1

0

.get.set当您需要将变量和值与特定对象关联时是有意义的socket,您可以通过玩范围来做您所说的,但请记住,无论socket.io存储数据的位置如何,它都不会与您的函数范围混淆。

举个简单的例子,假设你想存储一个名字,电子邮件地址,你会在里面声明.on('connection',..),形式为

var connnection={
 socket_id123:{
  "name":"joe"
  ,"mail":"joe@ii.com"
 }
 ,socket_id234:{
  "name":"joe"
  ,"mail":"joe@ii.com"
 }
}

在这种形式中,您必须检查是否存在,查询对象并跟踪数据,因此您可以弄乱树结构。

而 with .get.set上面的检查和操作树,被简化了,每个套接字对象都有自己的变量,没有任何东西可以覆盖它们,删除它们,或者弄乱它们,并且保持范围更干净。

于 2013-11-07T07:42:28.540 回答