Javascript - WebSocket OnOpen事件不会触发

时间:2013-05-25 11:09:20

标签: c# javascript html5 firefox websocket

每当我尝试使用此JS代码连接到计算机上的WebSocket服务器时,我都会收到错误:

$(document).ready(function () {
    var ws;
    try{
        if("WebSocket" in window){   
                ws = new WebSocket("ws://localhost:50002"); 
                socket.onopen = function(){  
                    $('#topbar').empty();
                    $('#topbar').append('<form id="test">');
                    $('#topbar').append('<input>');
                    $('#topbar').append('</form>');

                }  

                socket.onmessage = function(msg){  
                    ;  
                }  

                socket.onclose = function(){  
                    ;  
                } 

                socket.onerror = function(error){
                    $('#topbar').append('<div>Cannot make a connection with the server. Server is most likely in maintenance mode. Try again later</div>');
                }
        }
    }
    catch(exception) {$('#topbar').append('<div>Cannot make a connection with the server. Server is most likely in maintenance mode. Try again later</div>');}

});

我在Firefox中运行此代码,但是当我跟踪代码时,会触发Catch事件而不是OnOpen,我收到此消息:

  

[11:58:50.103]与ws:// localhost:50002 /的连接是   页面加载时中断。 @ /lib/default.js:5

我知道这是Firefox中的一个错误,但我的服务器控制台一直说它接受了我的计算机127.0.0.1的连接。我错过了什么吗?我在C#中使用Fleck服务器

1 个答案:

答案 0 :(得分:1)

虽然我无法为您的服务器问题提供答案,但在第6行,您会立即调用尚不存在的变量(socket),并在整个脚本中继续使用该变量。这实际上会导致您的catch被触发,因为它会产生异常。

socket的实例替换为ws(反之亦然),让我们看看它们的位置。