Angular JS重新初始化服务

时间:2017-07-17 12:44:32

标签: javascript angularjs node.js

我有一个角度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;
})

我在控制器中使用此服务。我想在连接失败的情况下重新连接到节点服务器。为此,我需要从控制器重新初始化此服务(我知道服务是单例,所以我正在寻找解决问题的方法)

我该怎么做?

3 个答案:

答案 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)

我正在使用reconnecting-websocket js库,它运行良好!

参考:https://github.com/pladaria/reconnecting-websocket

谢谢,
拉吉