JettyWebSocketAPI与标准JSR356 api的对比



Jetty 9既支持其自己的Jetty Websocket API,也支持标准的JSR 356 API,我认为这是历史原因(Jetty的API先于最终的JSR 355)。

我已经查看了这两个API的基本文档,以及一些示例。这两个API看起来相当完整,也相当相似。然而,对于我正在编写的新项目,我需要选择一个而不是另一个,并且我希望避免使用API,因为它可能在未来被弃用,或者可能会变得不那么功能丰富。

那么,除了一个明显的事实是标准化的之外,两者之间还有什么重要的区别吗?

Jetty上两者的实现者:)

Jetty WebSocket API首先出现,JSR-356 API构建在其之上

JSR-356 API做了一些Jetty WebSocket API没有做的事情,比如

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

然而,Jetty WebSocket API可以做JSR-356 API做不到的事情。

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

希望这能有所帮助,如果你想了解更多细节,请使用jetty用户邮件列表,因为这种问题对stackoverflow来说真的不合适。

相关内容

  • 没有找到相关文章

最新更新