如果方法是参数化的,则nodeSs WebSocket.send()不发送

时间:2015-06-25 16:47:26

标签: javascript websocket

我只是坚持一个有趣的时刻。 在我的服务器中,我正在实现WebSocket。在ws.on('connection')方法中,我有两个相同函数的变体:

1-st工作正常

第二个,仅由参数不同 - 也有效,但不是将消息发送到客户端。 代码:

var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({server: server});

wss.on('connection', function(ws){
   var timerR;

   // 1
   function startTheInterval1(){
      timerR = setInterval( function() {
         if (a >= 0){
            ws.send('message ' + a);  // Client recieves the message
            clearInterval(timerR);
         } 
      }, 1000);
   }
   startTheInterval1();

   // 2
   function startTheInterval2(flag){
      timerR = setInterval( function() {
         if (flag >= 0){
            ws.send('message ' + flag);   // Client don`t see the message
            clearInterval(timerR);
         } 
      }, 1000);
   }
   startTheInterval2(a);

   // some other code with socket
}

似乎我错过了一些关于JavaScript的东西。所以问题是:为什么第二种变体不能正常工作?

1 个答案:

答案 0 :(得分:0)

您的第一个函数是指可以在间隔之间更改值的全局a

您的第二个功能是指永远不会改变价值的本地a

JavaScript中的所有基本类型都是按值传递的。只有对象和数组通过引用传递。这就是你的第二个功能不起作用的原因。