1

我目前正在开发一个使用 jQuery mobile 和 Phonegap 的应用程序,该应用程序使用 websockets。在我的 html 中,我有一个表单,用户可以在其中输入他们想要连接的服务器的 IP。这是我的 JS 代码:

$(document).ready(function(){   
$('#connect').submit(function(){
    var ip = $('#iptext').val();
    var wsuri = "ws://" + ip + ":9021/ws";
    jQuery.mobile.changePage('#index', { allowSamePageTransition: true });

    if ("WebSocket" in window) {
        sock = new WebSocket(wsuri);
    } else if ("MozWebSocket" in window) {
       sock = new MozWebSocket(wsuri);
    } else {
       log("Browser does not support WebSocket!");
       window.location = "http://autobahn.ws/unsupportedbrowser";
    }

    ellog = document.getElementById('log');

    if (sock) {
       sock.onopen = function() {
          log("Connected to " + wsuri);
       }

       sock.onclose = function(e) {
          log("Connection closed (wasClean = " + e.wasClean + ", code = " + e.code + ", reason = '" + e.reason + "')");
          sock = null;
       }

       sock.onmessage = function(e) {
          log("Got echo: " + e.data);
          parseMessage(e.data);
       }
    }

});

});

表单已正确提交,但与服务器的连接立即关闭,错误代码为 1006。如果我将 websocked 的代码放在提交函数之外,一切正常。有任何想法吗?

编辑:我尝试从按钮上的常规 onclick 事件调用 websocket,没有 jQuery 移动,并且禁用了 AJAX。相同的行为。

4

0 回答 0