【发布时间】:2014-11-24 02:01:37
【问题描述】:
我想了解在 tomcat 中处理 websocket 升级请求?它是通过过滤器还是 servlet 完成的? TOmcat-8如何处理ws升级请求。
谢谢,
阿努杰
【问题讨论】:
我想了解在 tomcat 中处理 websocket 升级请求?它是通过过滤器还是 servlet 完成的? TOmcat-8如何处理ws升级请求。
谢谢,
阿努杰
【问题讨论】:
Tomcat 使用过滤器来查找启动 WebSocket 连接的 HTTP 升级请求,并在看到时将其传递给适当的处理程序。
过滤器是使用 ServletContainerInitializer 配置的。过滤器的位置将取决于 Web 应用程序配置的其他过滤器以及 Web 应用程序将它们放置在 FilterChain 中的位置。例如,Web 应用程序可能希望在 Web Socket 过滤器之前放置一个安全过滤器,而 Tomcat 允许这样做。
【讨论】:
javax.websocket 规范未定义的行为。这是针对该特定规范的开放错误 - 请参阅 WEBSOCKET_SPEC-188
WebSockets 是一个完全不同的协议。它们不是由过滤器或 servlet 处理,而是由 EndPoints 处理。要创建它们,您可以使用扩展端点类,但与 Java EE 中的其他所有内容一样,您现在可以使用注释。欲了解更多信息,请查看最新文档Java API for WebSockets
要在客户端创建它们,请求以 HTTP 开始,也许是 JavaScript,但在 Tomcat 上,端点正在侦听,而不是您的普通 servlet。
【讨论】: