4

只是一个用于一般理解的快速问题。会不会是一个开放的 Web 套接字连接阻塞了 ajax 请求?因为在初始化 Web 套接字连接之前的 ajax 请求工作得很好,并且在我建立了 Web 套接字连接之后什么都没有发生。

$.ajax({
   url: someUrl
}).done(function(data) {
    // stuff done and calling initWebSocket()
}).error(function(data) {
  // error stuff done
});

function initWebSocket() { 

    hostname = 'somehost';

    ws = new WebSocket('ws://' + hostname + ':' + wsPort);

    ws.onopen = function() {

    console.log('Connected');

    ws.send(initMessage);
}

ws.onmessage = function(msg) {

// do stuff on message received

}

ws.onclose = function() {
console.log('Disconnected');
}

}

$('#someButton').click(function(event) {

event.preventDefault();

$.ajax({
url: someUrl
}).done(function(data) {
console.log(data);
}).error(function(data) {
console.log(data);
});

});

就像提到的第一个 ajax 请求有效,第二个当我单击按钮时无效。有没有关于这个主题的信息,如果 web 套接字真的阻止了 ajax 请求,那么让它运行的解决方法是什么?谢谢。

4

1 回答 1

0

调用应该是异步的,但可能连接失败。尝试为 websocket 添加一个 onerror 处理程序,看看会发生什么。

ws.onerror = function(){ console.log(evt.data); }

此外,如果您可以制作 JSFiddle 或包含 HTML,则可能是按钮事件处理程序错误,并且根本与 websocket 代码无关。

于 2013-07-14T17:21:11.530 回答