代码之家  ›  专栏  ›  技术社区  ›  jarnbjo

由servlet容器提供的websockets

  •  14
  • jarnbjo  · 技术社区  · 15 年前

    上周我正在浏览WebSoCub,并就如何用Java Servlet API实现服务器端做了一些思考。我没有花太多时间,但在使用tomcat进行的几次测试中遇到了以下问题,如果不修补容器或至少对httpservletresponse实现进行特定于容器的修改,这些问题似乎是无法解决的:

    • websocket规范要求在101 http响应中定义一条消息。httpservletresponse.setstatus(int code,string message)已弃用,但未提及可用的替换项。在更改了默认的tomcat配置之后,我让tomcat遵守我的消息字符串,但是由于该方法被弃用,我不确定这是否适用于其他servlet容器。

    • websocket规范要求连接升级请求的http响应中头几个头的指定顺序。ServletAPI不提供指定响应头顺序的方法,Tomcat将自己的头添加到响应中,将其中一些头放在Servlet实现添加的任何头之前。

    • 由于提交头时不知道响应的内容长度,tomcat会自动切换到响应的分块传输编码,这与websocket规范不兼容。

    我是否遗漏了一些显而易见的东西,或者在基于servlet的web应用程序中集成websocket服务器端点真的不可能?

    4 回复  |  直到 15 年前
        1
  •  8
  •   Horcrux7    14 年前

    在中有一个实现 Jetty . 我们希望tomcat和jetty能够找到一个兼容的api。

        2
  •  6
  •   dlaidlaw    13 年前

    这个 Glassfish Atmosphere 项目会做你想做的。您可以定义一个servlet来完成所有工作。

        3
  •  0
  •   Rob Md Fahim Faez Abir    12 年前

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

        4
  •  -3
  •   Predrag Stojadinović    15 年前

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