在应用程序中打开Sockjs

时间:2016-03-06 02:25:45

标签: websocket sockjs

我想创建一个应用程序,其中page3用户通过sockjs websocket开始通信(他们通过page1和page2到达第3页)。代码工作正常,但我不知道为什么!

// Global scope
var sock;

// Inside a function page3, this is invoked when Page3 loads for the first time
function page3(){
   // Local scope
   sock= new SockJS("localhost:8080/messages);
   sock.onopen= function(){
   ....
   };

   sock.onmessage= function(data){
   ....
   };   
}

我的问题是 - 当从服务器发送消息时,程序执行如何sock.onmessage访问该消息,即使它已被查看'只有在第一次加载Page3时才会调用function page3()

2 个答案:

答案 0 :(得分:0)

看起来sock未导入(错误消息表明它未定义)

也许如果您可以分享更多代码,我们可以看到原因

答案 1 :(得分:0)

找到我自己的答案。

问题实际上与客户端上事件侦听器的可见性有关。答案就是 - 客户端上的所有事件监听器一旦被激活(程序执行流程已“看到”它们)保持活动状态,直到它们被删除。

所以在上面的例子中,即使程序执行只看到function page3()一次 - 当第一次加载Page3时,sock.onmessagepage3()期间被激活为(客户端)事件监听器。 1}}函数调用并继续保持活动状态,直到套接字关闭。

因此,不需要显式page3()函数调用来触发sock.onmessage。它(sock.onmessage)将继续监听服务器发送的套接字事件。