Javascript - WebSocket OnOpen 事件未触发

Posted

技术标签:

【中文标题】Javascript - WebSocket OnOpen 事件未触发【英文标题】:Javascript - WebSocket OnOpen event not triggering 【发布时间】:2013-05-25 11:09:19 【问题描述】:

每当我尝试使用此 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 服务器

【问题讨论】:

凹凸。有什么帮助吗?现在已经快一个星期了...... 凹凸。现在两周。没有人知道为什么这不起作用吗? BUMP 我也想知道这个(有点晚了) 【参考方案1】:

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

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

【讨论】:

以上是关于Javascript - WebSocket OnOpen 事件未触发的主要内容,如果未能解决你的问题,请参考以下文章

多个连接,但单个 websocket.on("message") 事件发射器

打开 websocket 连接时 on_open 函数无法运行?

为啥我不能在函数中使用 websocket

如何在 ruby​​ on rails 中通过 websocket 发送保持活动的数据包

即使我在 javascript 中应用过滤器,表数据也会保持刷新

Tornado websocket 客户端:如何异步 on_message? (从未等待协程)