Я пытаюсь включить веб-узлы в приложение Play. Мой файл маршрут, как показано ниже:Websockets with Play Framework 2.x - Java - 500 Ошибка
GET /login controllers.Application.login()
POST /login controllers.Application.authenticate()
GET /logout controllers.Application.logout()
GET /loggedin controllers.Presencelanding.loggedInSocket()
GET /loggedin controllers.Presencelanding.loggedIn()
Я хочу создать WebSocket, как только пользователь перенаправляется на это/LoggedIn страница
Теперь в моем контроллер presenceLanding меня
public static Result loggedIn(){
..... blah ....blah}
public static WebSocket loggedInSocket() {
try {
final Http.Session session = session();
String username = session(AppConstants.USERNAME);
connection = getConnection(username);
connection = XMPPConnectionHandler.performLogin(
xmppLogin.getLoggedinuser().getUsername(),
xmppLogin.getLoggedinuser().getPassword(),connection);
getAllData();
} catch (Exception e) {
e.printStackTrace();
Logger.error(e.getLocalizedMessage());
}
return new WebSocket() {
public void onReady(WebSocket.In in, WebSocket.Out out) {
System.out.println("ready");
in.onMessage(new F.Callback() {
public void invoke(String event) {
System.out.println(event);
}
@Override
public void invoke(Object a) throws Throwable {
System.out.println(a);
}
});
in.onClose(new F.Callback0() {
public void invoke() {
System.out.println("Disconnected");
}
});
out.write(loggedin.render(xmppLogin,completedChallenges,
pendingSentFromMeChal,pendingForMeChal,unseen));
}
};
}
Из моего javascript на клиенте у меня есть:
$(document).ready(function() {
getWebSocket();
});
function getWebSocket() {
var ws = new WebSocket("ws://localhost:9000/loggedInSocket");
}
Howeve r, когда я добавляю функцию возврата websocket в файл маршрутов, я получаю следующую ошибку: Невозможно использовать метод, возвращающий play.mvc.WebSocket [? 0] в качестве обработчика
Если я удалю эту строку и повторю попытку, ошибка консоли Javascript при попытке установки на WebSocket: подключение WebSocket к 'WS: // локальный: 9000/loggedInSocket' не удалось: Неожиданный код ответа: 500
QS2: также Как я обновить HTML, используя тот же WebSocket?
QS 3: Есть много сообщений об использовании Iteratees и т. Д. Для веб-сайтов с scala. Есть ли параллель для java, а также.
Цените любую помощь. Спасибо!
... и ошибка есть? –
Привет, Майк, я обновил вопрос – Mrinal
в QS2 - ваше сообщение в сети может содержать только «сигнал» для JS, который после приема будет выполнять обычный вызов AJAX в фоновом режиме, получать обновленные данные и обновлять представление – biesior