14

上周我正在查看 WebSockets,并就如何使用 Java Servlet API 实现服务器端提出了一些想法。我没有花太多时间,但在使用 Tomcat 的一些测试中遇到了以下问题,如果不修补容器或至少对 HttpServletResponse 实现进行容器特定修改,这些问题似乎无法解决:

  • WebSocket 规范要求在 101 HTTP 响应中定义一个消息。HttpServletResponse.setStatus(int code, String message) 已被弃用,但没有提及可用的替代品。更改默认 Tomcat 配置后,我让 Tomcat 尊重我的消息字符串,但由于该方法已弃用,我不确定这是否适用于其他 servlet 容器。

  • WebSocket 规范要求对连接升级请求的 HTTP 响应中前几个标头的指定顺序。servlet API 不提供指定响应标头顺序的方法,并且 Tomcat 将自己的标头添加到响应中,将其中一些标头放在任何标头之前,这些标头由 servlet 实现添加。

  • 由于在提交 header 时不知道响应的内容长度,因此 Tomcat 会自动为响应切换为分块传输编码,这与 WebSocket 规范不兼容。

我是否遗漏了一些明显的东西,或者真的不可能将 WebSocket 服务器端点集成到基于 servlet 的 Web 应用程序中?

4

4 回答 4

8

Jetty中有一个实现。我们可以希望 tomcat 和 jetty 找到兼容的 API。

于 2010-10-26T20:55:52.400 回答
6

Glassfish Atmosphere项目将满足您的需求。您可以定义一个 servlet 来完成所有工作。

于 2011-05-13T14:42:06.370 回答
0

jWebSocket声称作为 Tomcat 应用程序运行。不幸的是,一些文件在jWebSocket. jWebSocket由于源代码可用,有些人正在尝试重新编译并获取必要的文件。总而言之,jWebSocket似乎不是一个可靠的产品。

于 2012-10-11T13:03:41.223 回答
-3

是的,有一个非常好的(开源且完全免费):http ://www.jWebSocket.org

于 2010-02-12T16:31:31.943 回答