2

gwt 2.8 中的码头服务器现在支持 websocket 吗?据我所知,它以前不支持。如果有一个肯定的答案,那么如何使它起作用?我认为剥离 jetty-8 并用 jetty-9 替换它不是一个好主意。

4

2 回答 2

1

那么如何使它工作呢?

我想在 GWT 2.8.0 发布后详细说明一下。使用时唯一需要的javax.websocket是了解与 GWT 打包的 Jetty 版本和以下一组 Maven 依赖项(另请参阅GitHub 上的 Jetty WebSocket 示例):

<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以获取更多信息)话题)。

于 2016-10-28T13:08:03.730 回答
0

GWT 2.8 已切换到 Jetty 9.2,现在支持 Servlets 3.1 servlets 容器初始化器,我认为它被用于设置 WebSockets。
我还没有尝试过,但我想您现在可以在 DevMode 中使用 WebSocket,前提是您将所需的依赖项添加到类路径中。

您也可以简单地使用单独的服务器,而不是嵌入到 DevMode 中的服务器。

于 2016-05-25T07:03:10.503 回答