JavaScriptとJavaを用いてWebアプリを作成しているのですが、
WebSocketの通信のところでエラーが出て困っております。
OSはLinuxでApacheとTomcatを連携させております。
簡易なWebSocketでは通信が確認できたため、
JavaScriptのコードの間違いではないかと考えております。
JavaScriptのソースコードは以下のようになっております。
JavaScript
1var webSocket; 2window.onload = function() { 3 //アノテーションでwebsocketを指定 4 webSocket = new WebSocket("ws://FQDN:8080/アプリ名/websocket"); 5 var messageArea = document.getElementById("message-list"); 6 var sessionid = document.getElementById("sessionID").value; 7 var photo = document.getElementById("yourphoto").value; 8 var youruserid = document.getElementById("youruserid").value; 9 10 var appendMessage = function(value, session , yourid) { 11 var messageElement = document.createElement("message-list"); 12 var time = new Date(); 13 var month = time.getMonth() + 1; 14 if(month < 10) { month = "0" + month; } 15 var day = time.getDate(); 16 if(day < 10) { day = "0" + day; } 17 var hour = time.getHours(); 18 if(hour < 10) { hour = "0" + hour; } 19 var minute = time.getMinutes(); 20 if(minute < 10) { minute = "0" + minute; } 21 var now = month + "/" + day + " " + hour + ":" + minute; 22 if(youruserid == yourid && session != sessionid){ 23 messageElement.innerHTML = '<li class="msg_recieve"><a><img src="' + photo + '" alt="メッセージ相手写真" class="c-message_photo img-circle c-photo_mini"></a><div class="inner-box2"><p class="balloon_left">' + value + '</p></div></li><p class="time_recieve text10">' + now + '</p>'; 24 }else if(session == sessionid && youruserid != yourid){ 25 messageElement.innerHTML = '<li class="msg_send"><div class="inner-box"><p class="balloon_right" id="messageArea">' + value + '</p></div></li><p class="time_send text10">' + now + '</p>'; 26 } 27 messageArea.appendChild(messageElement); 28 var message_box = document.getElementById("message_box"); 29 message_box.scrollTop = message_box.scrollHeight; 30 } 31 webSocket.onopen = function() { 32 console.log("open") 33 } 34 webSocket.onclose = function() { 35 console.log("close") 36 } 37 webSocket.onmessage = function(message) { 38 var data = JSON.parse(message.data); 39 appendMessage(data.text, data.sessionid , data.youruserid); 40 } 41 42 var messageInput = document.getElementById("c-btn_chenge"); 43 var messageText = document.getElementById("messageInput"); 44 messageText.onkeypress = function(e) { 45 if (13 == e.keyCode) { 46 var message = messageText.value; 47 if (webSocket && "" != message) { 48 webSocket.send(message); 49 messageText.value = ""; 50 return false; 51 } 52 } 53 } 54 55 messageInput.onclick = function() { 56 var message = messageText.value; 57 if (webSocket && "" != message) { 58 webSocket.send(message); 59 messageText.value = ""; 60 } 61 } 62}
このページを表示した時はエラーは出ていないのですが、
何かしらのテキストを送信しようとするとエラーが出てしまいます。
Chromeのデベロッパーツールでエラー箇所を確認いたしますと、
Uncaught InvalidStateError: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.
のようなエラーが出ています。
また、https://www.websocket.org/echo.html
でブラウザの通信状態を確認いたしましたが、
接続は確立されておりました。
ソースコードにおかしな点がございましたらご教授お願い致します。
(色々突っ込みどころはあるコードだと思いますが・・・)
ご教授のほどよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/05 11:04 編集
2015/09/05 11:19 編集
2015/09/05 12:26 編集
2015/09/05 12:25
2015/09/05 12:45