为节点js中的不同客户端执行不同的代码

时间:2016-07-08 06:39:28

标签: node.js socket.io

我正在尝试将多个客户端连接到服务器并为每个连接的客户端递增值,但是如果一个客户端连接的数字按顺序递增,如1,2,3但是当第二个客户端连接时,该数字从4,5,1开始。 .its在两个终端中波动数字。如何为不同的客户端执行不同的代码?

2 个答案:

答案 0 :(得分:0)

您应该使用NodeJS的有状态特性。使用以下结构创建对象:

'use strict';

let obj = {
    UNIQUE_ID: Integer
}

其中UNIQUE_ID是将标识客户端的ID。例如,您可以随机创建一个数字并将其存储在用户cookie中。

然后,当客户端连接到服务器时,您将增加该特定的UNIQUE_ID。例如:

'use strict';

let obj = {
    "5": 0
};

obj["5"]++;

console.log(obj);

您可以阅读有关NodeJS hear的状态的更多信息。

答案 1 :(得分:0)

这听起来像你想要的通常称为" session"在node.js.中会话在node.js中创建一个对象,该对象与连接到服务器的每个单独客户端唯一关联,您可以在同一服务器的不同请求之间累积或收集信息。

会话的工作原理如下:

  1. 客户端第一次连接到服务器时,服务器会为该客户端添加唯一标识符并将其设置为cookie。

  2. 然后,服务器使用唯一客户端ID作为某个服务器端数据结构的密钥来创建会话对象。

  3. 然后,服务器代码处理请求可以读取或写入该会话所需的任何值。

  4. 在同一客户端的后续请求中,服务器可以从cookie中获取客户端标识符,然后可以在服务器上查找相应的会话对象,并可以访问"会话数据"为那个客户。

  5. 为了防止会话对象永远累积,通常会有某种超时或清除机制来删除旧会话。

  6. 对于node.js世界中的所有常见http服务器框架,已经存在实现此会话概念的模块。例如,Express框架有多个实现会话的NPM模块,最常见的可能是express-session

    使用这样的会话结构然后允许您为每个连接客户端分别跟踪某个状态,并从该客户端到下一个客户端的一个请求维护该状态。然后,您可以根据该客户端状态的状态实现自己的逻辑,以便为一个请求执行不同的代码而不是另一个请求。