Jetty Websocket с Guice Dependency Injection - PullRequest
       39

Jetty Websocket с Guice Dependency Injection

0 голосов
/ 19 декабря 2018

Я использую причал для предоставления веб-сокетов для моего приложения.Некоторые из моих конечных точек websocket требуют ввода какого-либо объекта доступа к данным.

Maven-зависимости:

<dependency>
  <groupId>com.google.inject</groupId>
  <artifactId>guice</artifactId>
  <version>4.2.1</version>
</dependency>
<dependency>
  <groupId>javax.websocket</groupId>
  <artifactId>javax.websocket-api</artifactId>
  <version>1.0</version>
</dependency>
<dependency>
  <groupId>org.eclipse.jetty.websocket</groupId>
  <artifactId>javax-websocket-server-impl</artifactId>
  <version>9.4.12.v20180830</version>
</dependency>

Конечная точка:

import javax.inject.Inject;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint(value="/host/handshake/", 
                decoders = HandshakeMessageDecoder.class, 
                encoders = HandshakeMessageEncoder.class)
public class HostHandshakeEndpoint {
    @Inject
    private HostDao hostDao;

    @OnMessage
    public void onMessage(Session session, HandshakeMessage handshakeMessage) {
        if (handshakeMessage.isFirstTouch()) {
            int hostId = hostDao.getHostIdByHostname(handshakeMessage.getHostName());
            try {
                session.getBasicRemote().sendText("hostId: " + hostId);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

В то время как мои веб-сокеты в целом работают, я не могу заполнить свои аннотированные @ Inject поля.

Как использовать guice-инъекцию свстроенный джет-веб-сокет-сервер?

...