Jetty WebSocket api与标准JSR 356 API相比

Mal*_*alt 10 java jetty jsr websocket jetty-9

码头9支持两种它自己的Jetty的WebSocket API,以及标准的JSR 356 API,为我承担其历史原因(Jetty的API 之前最后JSR 356).

我查看了两个API的基本文档,以及一些示例.这两个API看起来相当完整且非常相似.但是,我需要为我正在编写的新项目选择一个而不是另一个,并且我希望避免使用可能在将来被弃用的API,或者可能会变得功能不足.

那么两者之间是否有任何重要的区别,除了一个标准化的明显事实?

Joa*_*elt 17

这两个Jetty的执行者:)

Jetty WebSocket API首先出现,而JSR-356 API则建立在它之上.

JSR-356 API执行Jetty WebSocket API没有的一些功能,例如

  • 解码器用于自动Bin/Text to Object转换
  • 编码器用于自动对象到文本/文本转换
  • 路径参数处理(也称为方法参数映射的自动URI模板)

但是,Jetty WebSocket API可以执行JSR-356 API无法做到的事情.

  • WebSocketCreator逻辑用于任意创建WebSocket端点,可以访问HttpServletRequest
  • 更好地控制超时
  • 更精细的缓冲区/内存配置
  • 您可以管理WebSocket Extensions
  • 支持端点的基于Reg-ex的路径映射
  • 访问原始Frame事件
  • WebSocket客户端支持HTTP代理(JSR-356独立客户端没有代理的配置选项)
  • WebSocket客户端支持更好的连接逻辑和超时
  • WebSocket客户端支持SSL/TLS(JSR-356独立客户端没有SSL/TLS的配置选项)
  • 从活动WebSocket Session对象访问两个InetAddress端点信息
  • 从活动WebSocket会话对象访问UpgradeRequest
  • 更好地支持无状态端点
  • 读取事件支持挂起/恢复逻辑,以允许应用程序进行一些基本的tcp背压/流量控制
  • 基于过滤器或基于Servlet的配置(JSR-356方法要求在所有其他servlet和过滤器处理之前进行升级)

希望这有帮助,如果你想了解更多细节,请使用jetty-users邮件列表,因为这类问题真的不适合stackoverflow.

  • 谢谢你的回答.我确实注意到了一些差异(例如编码器/解码器和路径参数处理),但你的回答非常*非常有帮助.我也不确定我的问题在这里是完全不合适的,虽然我同意它可能会在你的邮件列表上感觉更"在家".毕竟,这个问题不是主观的,并且属于"软件开发中独有的实用,可回答的问题"类别(http://stackoverflow.com/help/on-topic) (2认同)