我目前正在使用jQuery mobile和使用websockets的Phonegap开发应用程序。在我的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 mobile,并禁用AJAX。同样的行为。