我有一个角度js服务,它返回一个节点js WebSocket连接。
.service('WebSocketService', function(){
console.log("Starting Web Socket Service...");
var ws= new WebSocket('wss://127.0.0.1:8443/live');
return ws;
})
我在控制器中使用此服务。我想在连接失败的情况下重新连接到节点服务器。为此,我需要从控制器重新初始化此服务(我知道服务是单例,所以我正在寻找解决问题的方法)
我该怎么做?
答案 0 :(得分:0)
webSocketService.connect()
控制器
{{1}}
答案 1 :(得分:0)
您可以将套接字包装到服务将返回的另一个对象中:
.service('WebSocketService', function(){
console.log("Starting Web Socket Service...");
var ws= new WebSocket('wss://127.0.0.1:8443/live');
return {ws : ws,
restart: restart
};
function restart() {
ws = new WebSocket('wss://127.0.0.1:8443/live');
return ws;
}
})
因此,在您的控制器中,我认为您需要执行以下操作:
.controller('SomeController', ['WebSocketService', '$timeout', function(WebSocketService, $timeout){
this.ws = WebSocketService.ws;
this.ws.onclose = function(){
$timeout(function(){
this.ws = WebSocketService.restart();
}, 4000)
}
}])
答案 2 :(得分:0)