2016-02-19 1 views
0

Я использую Grizzly для установки сервера websocket в java. Моя проблема в том, что я не могу настроить вещатель на websocket, чтобы использовать оптимизированный, переопределяя WebSocketApplication. Я следил за описанием документации. Но я получил эту ошибку.setBroadcaster (Broadcaster) от типа SimpleWebSocket не отображается в Grizzly java

Метод setBroadcaster (Broadcaster) от типа SimpleWebSocket не отображается.

Вот мой код

public class BroadcastApplication extends WebSocketApplication { 

    private final Broadcaster broadcaster; 

    public BroadcastApplication(Broadcaster broadcaster) { 
     this.broadcaster = broadcaster; 
    } 

    @Override public WebSocket createSocket(ProtocolHandler handler, 
      HttpRequestPacket requestPacket, WebSocketListener... listeners) { 
     final DefaultWebSocket ws = (DefaultWebSocket) super.createSocket(handler, requestPacket, listeners); 
     ws.setBroadcaster(broadcaster); // Got error here 
     return ws; 
    } 

    @Override public void onMessage(WebSocket socket, String data) { 
     socket.broadcast(getWebSockets(), data); 
    } 
} 

Моя grizzly-websockets версия 2.3.22. Любое предложение приветствуется.

ответ

1

Что-то, как это должно работать:

public class BroadcastApplication extends WebSocketApplication { 

    private final Broadcaster broadcaster; 

    public BroadcastApplication(Broadcaster broadcaster) { 
     this.broadcaster = broadcaster; 
    } 

    @Override 
    public WebSocket createSocket(ProtocolHandler handler, 
      HttpRequestPacket requestPacket, WebSocketListener... listeners) { 
     return new BroadcastWebSocket(broadcaster, handler, requestPacket, listeners); 
    } 

    @Override 
    public void onMessage(WebSocket socket, String data) { 
     socket.broadcast(getWebSockets(), data); 
    } 

    private static class BroadcastWebSocket extends DefaultWebSocket { 

     public BroadcastWebSocket(Broadcaster broadcaster, 
       ProtocolHandler protocolHandler, 
       HttpRequestPacket request, 
       WebSocketListener... listeners) { 

      super(protocolHandler, request, listeners); 
      this.broadcaster = broadcaster; 
     } 
    } 
} 
Смежные вопросы