Javascript 多个WebSocket的问题(随着时间的推移)

Javascript 多个WebSocket的问题(随着时间的推移),javascript,c#,angularjs,websocket,websocket-sharp,Javascript,C#,Angularjs,Websocket,Websocket Sharp,TLDR:我的WebSocket在一段时间后停止连接,尽管它们一开始工作得很好。我怎么修理它 我有一个C#web服务,它使用两个websocket(通过websocket sharp)。它们的定义如下: public WebSocketServer sock1= new WebSocketServer("ws://localhost:802"); sock1.Log.Level = WebSocketSharp.LogLevel.Error; sock1.

TLDR:我的WebSocket在一段时间后停止连接,尽管它们一开始工作得很好。我怎么修理它

我有一个C#web服务,它使用两个websocket(通过websocket sharp)。它们的定义如下:

    public WebSocketServer sock1= new WebSocketServer("ws://localhost:802");
        sock1.Log.Level = WebSocketSharp.LogLevel.Error;
        sock1.Log.File = "LOG\\logfile.LOG";
        sock1.AddWebSocketService<StatusWebSocket1>("/");
        sock1.KeepClean = false;
        sock1.Start();
    public WebSocketServer sock2= new WebSocketServer("ws://localhost:803");
        sock2.Log.Level = WebSocketSharp.LogLevel.Error;
        sock2.Log.File = "LOG\\logfile.LOG";
        sock2.AddWebSocketService<StatusWebSocket2>("/");
        sock2.KeepClean = false;
        sock2.Start();
以及其他地方:

var socket2 = null;
var startStopPolling2 = function(action){
    if(action == 'close'){
        socket2.close(3001, 'App closing.');
        return;
    }

    var path2 = 'ws://' + window.location.hostname + ':803/';

    socket2 = new WebSocket(path2);
    socket2.onerror = function(event){
        console.log('SOCKET ERROR', event);
        $timeout(startStopPolling2, 1000);
    };
    socket2.onopen = function(){
        var selfInfo = {
            mode: 'status2',
            type: 'ClientRegistration'
        };
        socket2.send(JSON.stringify(selfInfo));

        socket2.onmessage = function(event){
             var data = JSON.parse(event.data);
             console.log('status2', data.status2);
             if(data.status2 == "Closed"){
                 $state.go("status");
             }
        };
    };
};
startStopPolling2();
$rootScope.$on('$destroy', function(){
    startStopPolling2('close');
});
应用程序主要位于一个页面上。(大多数情况下,我们都会显示一个状态页面,但允许用户导航到其他位置来执行管理配置之类的操作。)当我们从status2套接字(
socket2
)接收到某个状态值时,我们希望执行一些操作,因此我们必须始终跟踪这些操作。另一个套接字仅在该页面上相关,因此我们希望在不需要它时将其丢弃


问题是:该应用程序通过调用
location.reload(true)
定期刷新页面。如果它一开始工作得很好,那么经过这么多次刷新后,插座不再连接。控制台中没有错误,也没有触发
onOpen()
函数发生了什么,我如何修复它?

不应该
socket2
使用
path2
?@emed是的,输入错误。谢谢不应该
socket2
使用
path2
?@emed是,输入错误。谢谢
var socket2 = null;
var startStopPolling2 = function(action){
    if(action == 'close'){
        socket2.close(3001, 'App closing.');
        return;
    }

    var path2 = 'ws://' + window.location.hostname + ':803/';

    socket2 = new WebSocket(path2);
    socket2.onerror = function(event){
        console.log('SOCKET ERROR', event);
        $timeout(startStopPolling2, 1000);
    };
    socket2.onopen = function(){
        var selfInfo = {
            mode: 'status2',
            type: 'ClientRegistration'
        };
        socket2.send(JSON.stringify(selfInfo));

        socket2.onmessage = function(event){
             var data = JSON.parse(event.data);
             console.log('status2', data.status2);
             if(data.status2 == "Closed"){
                 $state.go("status");
             }
        };
    };
};
startStopPolling2();
$rootScope.$on('$destroy', function(){
    startStopPolling2('close');
});