【发布时间】:2016-05-25 05:06:08
【问题描述】:
gwt 2.8 中的 jetty 服务器现在支持 websocket 吗?据我所知,它以前不支持。如果有一个肯定的答案,那么如何使它起作用?我认为剥离 jetty-8 并用 jetty-9 替换它不是一个好主意。
【问题讨论】:
标签: gwt websocket jetty gwt-2.8
gwt 2.8 中的 jetty 服务器现在支持 websocket 吗?据我所知,它以前不支持。如果有一个肯定的答案,那么如何使它起作用?我认为剥离 jetty-8 并用 jetty-9 替换它不是一个好主意。
【问题讨论】:
标签: gwt websocket jetty gwt-2.8
那么如何让它工作呢?
我想在 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 了解更多信息有关此主题的信息)。
【讨论】:
GWT 2.8 已切换到 Jetty 9.2,并且现在支持 Servlets 3.1 servlets 容器初始化程序,我认为它们被用于设置 WebSockets。
我还没有尝试过,但我想你现在可以在 DevMode 中使用 WebSocket,只要你将所需的依赖项添加到类路径中。
您也可以简单地使用单独的服务器,而不是嵌入到 DevMode 中的服务器。
【讨论】: