私は現在、websocket を使用する jQuery モバイルと 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 のコードを送信関数の外に置くと、すべて正常に動作します。何か案は?
編集: jQuery モバイルを使用せず、AJAX を無効にして、ボタンの通常の onclick-event から websocket を呼び出してみました。同じ動作。