首页 文章

Servlet容器提供的WebSockets

提问于
浏览
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实现添加 .

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

我是否遗漏了一些明显的东西,或者是否真的无法在基于servlet的Web应用程序中集成WebSocket服务器 endpoints ?

4 回答

  • -3

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

  • 8

    Glassfish Atmosphere项目将做你想要的 . 您可以定义一个servlet来完成所有工作 .

  • 0

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

  • 6

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

相关问题