Поддержка веб-сокетов GWT 2.8

Поддерживает ли джетти-сервер в gwt 2.8 веб-сокет? Насколько я знаю, он не поддерживал раньше. Если есть положительный ответ, то как заставить его работать? Я думаю, что демонтировать причал-8 и заменить его на причал-9 не очень хорошая идея.

2 ответа

тогда как заставить это работать?

Я хочу подробнее остановиться на этом после выпуска GWT 2.8.0. Единственное, что требуется для использования javax.websocket это знание версии Jetty, упакованной с GWT, и следующего набора зависимостей Maven (см. также примеры Jetty WebSocket на GitHub):

<project>
  <properties>
    <sdm.jetty.version>9.2.14.v20151106</sdm.jetty.version>
  </properties>

  <dependencies>
    <dependency>
        <groupId>org.eclipse.jetty.websocket</groupId>
        <artifactId>websocket-server</artifactId>
        <version>${sdm.jetty.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty.websocket</groupId>
        <artifactId>javax-websocket-server-impl</artifactId>
        <version>${sdm.jetty.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.websocket</groupId>
        <artifactId>javax.websocket-api</artifactId>
        <version>1.0</version>
        <scope>provided</scope>
    </dependency>
  </depencies>
</project>

Удостоверьтесь, что область действия предоставлена вдвойне - для первых двух это будет означать, что они не упакованы в окончательное приложение - они понадобятся вам только при запуске SuperDev-Mode (SDM). Еслиjava.websocket-apiбыл на вашем пути к классам, вероятно, конфигурация на основе аннотаций не будет работать вообще (по крайней мере, во встроенных Tomcat и Jetty) из-за аннотаций, выбранных неправильным загрузчиком классов (см. также связанный вопрос WebSocket 404 error для получения дополнительной информации по этой теме).).

GWT 2.8 перешел на Jetty 9.2 и теперь поддерживает инициализаторы контейнеров сервлетов Servlets 3.1, которые, я думаю, используются для настройки WebSockets.
Я не пробовал, но я полагаю, что теперь вы можете иметь WebSockets в DevMode при условии, что вы добавите необходимые зависимости в путь к классам.

Вы также можете просто использовать отдельный сервер, а не тот, который встроен в DevMode.

Другие вопросы по тегам