У меня есть решение для веб-сокетов клиент / сервер, но, что довольно необычно, я бы хотел, чтобы сервер отправлял обновление клиенту, непосвященному. При отправке обновлений я также хотел бы избежать использования какого-либо интервального таймера, а скорее, чтобы они запускались событием на стороне сервера.
Я вижу, что вопрос здесь уже задавался, но, похоже, ни у кого нет элегантного решения.
Как реализовать отправку клиенту с помощью Java EE 7 WebSockets?
В том же решении пользователь предлагает предложение, подобное приведенному ниже, но мне интересно, как вызвать метод sendMessage (String message) из другого класса?
@WebSocket
public static class EchoSocket
{
private org.eclipse.jetty.websocket.api.Session session;
private org.eclipse.jetty.websocket.api.RemoteEndpoint remote;
@OnWebSocketClose
public void onWebSocketClose(int statusCode, String reason)
{
this.session = null;
this.remote = null;
System.out.println("WebSocket Close: {} - {}" + statusCode + " : " + reason);
}
@OnWebSocketConnect
public void onWebSocketConnect(org.eclipse.jetty.websocket.api.Session session)
{
this.session = session;
this.remote = this.session.getRemote();
System.out.println("WebSocket Connect: {}" + session.toString());
this.remote.sendStringByFuture("You are now connected to " + this.getClass().getName());
}
@OnWebSocketError
public void onWebSocketError(Throwable cause)
{
System.out.println("WebSocket Error" + cause.getLocalizedMessage());
}
@OnWebSocketMessage
public void onWebSocketText(String message)
{
if (this.session != null && this.session.isOpen() && this.remote != null)
{
System.out.println("Echoing back text message [{}]" + message);
this.remote.sendStringByFuture(message);
}
}
public void sendMessage(String message) {
this.remote.sendStringByFuture(message);
}
}
Любые предложения будут очень признательны.