我目前正在开发一个使用 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。相同的行为。