在应用程序中打开 Sockjs
Open Sockjs inside an application
我想创建一个应用程序,在第 3 页用户开始通过 sockjs websocket 进行通信(他们通过第 1 页和第 2 页到达第 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
,即使它是 'seen' 只有在第一次加载 Page3 时,即 function page3()
被调用了?
看起来 sock
没有被导入(错误消息说它是未定义的)
也许如果您能分享更多代码,我们就能明白原因
找到我自己的答案。
这个问题实际上与客户端事件监听器的可见性有关。答案是 - 客户端上的所有事件侦听器一旦被激活(程序执行流程有 "seen" 它们)将保持活动状态,直到它们被删除。
因此,在上述情况下,即使 function page3()
仅通过程序执行一次 "seen" - 当第一次加载 Page3 时, sock.onmessage
在此期间被激活为(客户端)事件侦听器page3()
函数调用并继续保持活动状态直到套接字关闭。
因此,不需要显式 page3()
函数调用来触发 sock.onmessage
。它(sock.onmessage
)会一直监听服务器发送的套接字事件。
我想创建一个应用程序,在第 3 页用户开始通过 sockjs websocket 进行通信(他们通过第 1 页和第 2 页到达第 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
,即使它是 'seen' 只有在第一次加载 Page3 时,即 function page3()
被调用了?
看起来 sock
没有被导入(错误消息说它是未定义的)
也许如果您能分享更多代码,我们就能明白原因
找到我自己的答案。
这个问题实际上与客户端事件监听器的可见性有关。答案是 - 客户端上的所有事件侦听器一旦被激活(程序执行流程有 "seen" 它们)将保持活动状态,直到它们被删除。
因此,在上述情况下,即使 function page3()
仅通过程序执行一次 "seen" - 当第一次加载 Page3 时, sock.onmessage
在此期间被激活为(客户端)事件侦听器page3()
函数调用并继续保持活动状态直到套接字关闭。
因此,不需要显式 page3()
函数调用来触发 sock.onmessage
。它(sock.onmessage
)会一直监听服务器发送的套接字事件。