它是否与一个后端服务器websockets上的多个用户冲突

时间:2017-12-21 08:22:31

标签: javascript node.js websocket server backend

我打算在服务器上构建一些后端逻辑供个人使用。它从另一台服务器连接到websocket,我设置代码来处理来自该套接字的数据。我仍然是使用websockets的新手,所以整个概念对我来说仍然有些陌生。

如果我允许更多用户使用该后端并且websocket具有特定的逻辑运行,那么多个用户是否会冲突?或者每个用户都有自己的脚本实例运行?

它对我想要问的内容有什么意义吗?

1 个答案:

答案 0 :(得分:0)

  

如果我允许更多用户使用该后端并且websocket具有特定的逻辑运行,那么多个用户是否会冲突?或者每个用户都有自己的脚本实例运行?

在node.js中,只有一个脚本副本正在运行(除非您使用像群集这样的内容来为每个内核运行脚本副本,这听起来不像您所询问的那样)。因此,如果您有多个webSocket连接到同一个服务器,它们将在相同的服务器代码中运行,具有相同的变量等...这就是node.js的工作方式。一个正在运行的Javascript引擎和一个代码库提供了许多连接。

node.js是一个事件驱动的系统,因此它将从一个webSocket提供传入事件,然后将控制权返回给Javascript系统并提供事件队列中的下一个事件,依此类推。每当请求处理程序调用某个异步操作并等待响应时,就可以从传入的事件队列中提取另一个事件,并且可以运行另一个请求处理程序。通过这种方式,即使Javascript只有一个运行的单个线程,多个请求处理程序也可以与所有正在完成的进程交错。

此体系结构通常意味着您永远不希望将特定于请求的状态放在全局或模块范围中,因为这些范围由所有请求处理程序共享。相反,状态应该在特定于请求的范围内,或者在绑定到该特定用户的会话中。

  

一个后端服务器websockets上的多个用户是否存在冲突

不,如果您正确编写服务器代码,它不会发生冲突。是的,如果您错误地编写了服务器代码,则会发生冲突。