我正在使用 angularjs 构建一个单页应用程序 - 我向访客和用户以及其他特定用户打开的连接发出一个消息套接字。
因此我需要套接字知道是否为用户或访客初始化连接。由于我使用的是 Angular,所以当用户登录时我不会刷新页面,随后在刷新页面之前,用户不会收到他们的个人套接字 io 通知。 (信息太多?抱歉!)
简单问题 - 如何以编程方式(最好是从客户端)复制页面刷新(重新启动)时套接字 io 发生的情况。
尝试过这个
restart: function(){
socket.disconnect();
window.socket = io.connect();
}
并且它不起作用(似乎只调用了断开连接函数,实际上并未重新启动连接),似乎找不到任何其他解决方案!
最佳答案
我使用了WebSocket
:
以下是对我有用的代码片段:
function startSocket()
{
if ("WebSocket" in window)
{
ws = new WebSocket("%%WEBSOCKET_URL%%");
// Called when the websocket is opened
ws.onopen = function()
{
/* .... */
};
// Called when the websocket receives data
ws.onmessage = function(evt)
{
/* .... */
//dataTableDefault.push(evt.data);
};
// Called when the websocket is closed
ws.onclose = function() {
};
}
else
{
alert("Browser doesn't support WebSockets!");
}
}
function stopSocket()
{
try {
ws.onopen = null;
ws.onmessage = null;
ws.onclose = null;
ws.onerror = null;
ws.close();
} catch (e) {
console.log('try/catch around location update'+e);
}
}
希望对你有帮助
关于node.js - 在客户端重新启动socket.io,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21507273/