0
public static WebSocket<JsonNode> chat(final String chatname, final String username) {
Logger.info("Received request for WebSocket");
return new WebSocket<JsonNode>() {
public void onReady(WebSocket.In<JsonNode> in, final WebSocket.Out<JsonNode> out){
......
//My Code never reaches here
}
}
ログエントリ「Websocketの受信リクエスト」が表示され、それからonReadyにアクセスすることはありません。Websocket接続ハンドシェイクがタイムアウトしました
プレイバージョン2.3.10およびScalaバージョン2.11.6。まっすぐ進む
var WS = window['MozWebSocket'] ? MozWebSocket : WebSocket
var chatSocket = new WS("@routes.Application.chat(chatname, username).webSocketURL(request)")
に見える
Javascriptコードは、誰かが正しい方向に私を指すもらえますか?いくつかのバージョンの不一致の問題があり、例外やJVMが早期に終了し、すべてをクリアすることができましたが、これは何の手がかりも与えません。ジャワ -
クロームコンソールにはエラーが
Scalaの後編集:: Javascriptが
$(function() {
$("#onChat").show()
var WS = window['MozWebSocket'] ? MozWebSocket : WebSocket
var chatSocket = new WS("ws://localhost:9000/room/chat?chatname=topic&username=test")
var sendMessage = function() {
chatSocket.send(JSON.stringify(
{text: $("#talk").val()}
))
$("#talk").val('')
}
var receiveEvent = function(event) {
var data = JSON.parse(event.data)
// Create the message element
var el = $('<div class="message"><span></span><p></p></div>')
$("span", el).text(data.user)
$("p", el).text(data.message)
$(el).addClass(data.kind)
$('#messages').append(el)
}
var handleReturnKey = function(e) {
if(e.charCode == 13 || e.keyCode == 13) {
e.preventDefault();
waitForSocketConnection(chatSocket,sendMessage);
}
}
$("#talk").keypress(handleReturnKey)
chatSocket.onmessage = waitForSocketConnection(chatSocket,receiveEvent);
// Make the function wait until the connection is made...
function waitForSocketConnection(socket, callback) {
setTimeout(function() {
if (socket.readyState === 1) {
console.log("Connection is made")
if(callback != null) {
callback();
}
return;
} else {
console.log("wait for connection...")
waitForSocketConnection(socket, callback);
}
}, 1000); // wait 5 milisecond for the connection...
}
})
ルート
GET / controllers.Application.index()
GET /room controllers.Application.chatRoom(chatname: String ?= null, username: String ?= null)
GET /room/chat controllers.Application.chat(chatname, username)
GET /assets/javascripts/chatroom.js controllers.Application.chatRoomJs(chatname, username)
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.at(path="/public", file)
私は最終的なJavaスクリプトがScalaのテンプレートの後に何があるか、より多くの情報が必要コンパイルされる? ここでは、方向: ここでは、@ routes.Application.chat(chatname、username).webSocketURL()をリクエストパラメータなしで使用しましたが、これは遊び2.2.6用です。 また、https/httpとwss/wsの互換性もチェックしてください。 あなたはApacheまたはnginxの下にいますか?はいの場合は、WSプロトコルを受け入れるように設定する必要があります。 希望します.. :) – nipo
バックエンドを検証するためにこれを試してください:http://www.websocket.org/echo.html – nipo
@nipo - 最終的なJavascriptで私の質問を編集しました –