隔离每个线程/用户的setInterval?

时间:2015-03-19 08:08:59

标签: javascript node.js

我使用的是nodejs,我之所以从php套接字服务器切换到nodejs是因为它具有线程功能。 (基本上,我希望我的游戏服务器中的怪物能够自动攻击玩家)。

让我们在我的sever.js文件中说出我输入的节点:

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

我在一个浏览器上登录并验证我的角色,然后看看我能看到的控制台'你好'每秒输出一次。没问题,但是我加载了一个新浏览器,验证了另一个用户,然后查看了控制台.. 实际输出的速度是原来的两倍,这实际上不是正确的方法做对了吗?

编辑:我使用https://github.com/websockets/ws并且setInterval函数位于

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

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

1 个答案:

答案 0 :(得分:1)

您的脚本是为每个用户运行的(因为那是服务器)。当然,您可以收听并发送给特定用户。您需要为每个生成一个emit,或者以只向所需客户端发送数据的方式写入emit。

这可能会对您有所帮助: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.