如果方法被参数化,nodejs WebSocket.send()不会发送



我刚刚度过了一个有趣的时刻。在我的服务器中,我正在实现WebSocket。在ws.on("连接")方法中,我有两个相同功能的变体:

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的东西。所以问题是:为什么第二种变体不能正常工作?

您的第一个函数引用了一个全局a,它可以在间隔之间更改值。

您的第二个函数引用了一个永远不会更改值的本地a

JavaScript中的所有基元类型都是通过值传递的。只有对象和数组通过引用传递。这就是为什么你的第二个函数不起作用。

相关内容

  • 没有找到相关文章

最新更新