Jetty WebSocket api与标准JSR 356 API相比

时间:2014-09-10 16:40:42

标签: java websocket jetty jsr jetty-9

Jetty 9支持both它自己的Jetty Websocket API以及标准的JSR 356 API,我认为这是历史原因(Jetty的API precedes { {3}})。

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

除了一个标准化的明显事实外,两者之间是否存在重大差异?

1 个答案:

答案 0 :(得分: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无法做到的事情。

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

希望这会有所帮助,如果您需要更多详细信息,请使用jetty-users mailing list,因为此类问题对于stackoverflow非常不合适。