Jetty WebSocket api与标准JSR 356 API相比

Jetty 9支持它自己的Jetty Websocket API以及标准的JSR 356 API,因为我认为是历史原因(Jetty的API 在 最终的JSR 356 之前 )。

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

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

Jetty这两个的实现者:)

Jetty WebSocket API排在第一位,JSR-356 API建立在它之上。

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

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

但是,Jetty WebSocket API可以完成JSR-356 API无法做到的事情。

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

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