javascript - 为每个线程/用户隔离 setInterval?

标签 javascript node.js

我正在使用nodejs,我从php套接字服务器切换到nodejs的原因之一是线程能力。 (本质上,我希望游戏服务器中的怪物能够自动攻击玩家)。

假设在我放置的 Node 的 sever.js 文件中:

setInterval(function(){
        console.log('Hello');
}, 1000);

我在一个浏览器上登录并验证我的 Angular 色,然后查看控制台,我可以看到每秒都会输出“Hello”。没关系,但是然后我加载一个新的浏览器,验证另一个用户的身份,然后查看控制台。它的输出速度实际上是原来的两倍,这实际上不是正确的方法吗?

编辑:我正在使用 https://github.com/websockets/ws setInterval 函数就在

下面
socket.on('message', function(Message, flags) {
~~~gameserver authentication /blah mysql blah ~~
setInterval(function(){
        console.log('Hello');
}, 1000);
})

希望这对您有所帮助,抱歉不够具体。

最佳答案

您的脚本针对每个用户运行(因为这是服务器)。当然,您可以收听并向特定用户发送。您需要为每个生成一个发射,或者以仅将数据发送到所需客户端的方式编写发射。

这可能对您有帮助:socket.io and node.js to send message to particular client

评论后编辑:

不,该脚本将为每个用户运行,因此您为每个用户启动一个间隔。如果您只想启动一个,您可以:

  1. Name your interval and if it is defined not start it again.
  2. Start the interval on a separate script that you run from console or something like that and it is never accessed by clients.

关于javascript - 为每个线程/用户隔离 setInterval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29139654/

相关文章:

javascript - 使用加载器 ts-node/esm.js 运行 Node 需要导入具有 .js 扩展名

node.js - 从另一个属性中序列化模型 setter 集

node.js - 向不与我的机器人共享服务器的用户发送消息

javascript - 获取字典列表中的最大值,其中字典中存在多个值

javascript - 使用 grunt-protractor-runner 将 "process.argv[3]"等参数传递给 Protractor

javascript - 如何获取两个输入事件内两个不同函数内且都在本地范围内的两个变量的总和?

node.js - 如何在服务器上部署 Node Js 后端和 React Js 前端?

javascript - Nodejs HTTP 重试模式

javascript - 用字典中的单词替换数组中的单词

javascript - 如何创建在 document.write 中存活的 JS 事件监听器?