Embedded Jetty 9 - 我需要 Websocket Server、REST Servlet 和 File



是否可以将所有 3 个(Websocket、REST Servlet 和文件服务器(都放在同一个端口上?

我一直在网上寻找很多部分解决方案的例子,但 Jetty 设置有很多变化,很难确定什么对我有用。

我更喜欢使用 JSR-356 websocket api 而不是 Jetty 专有的,以防我以后必须移动到不同的服务器。

是的,如果HTTP路径不同,则最容易。

  • /ws/*上的 WebSocket
  • 休息/api/*
  • 静态文件在/static/*上提供(或仅在/上,这意味着对于所有不以/ws//api/开头的请求(

但是,如果您不想使用路径,则必须使用请求的其他分隔符。

  • WebSocket 升级是带有Connection: upgrade的 GET,因此不会与 REST 或文件服务冲突。
  • 如果路径重叠,REST 很容易与文件服务发生冲突。(如果客户端请求/stuff/here并且您在/*上设置了 REST,那么该请求意味着什么?REST 还是静态文件?
  • 文件服务传统上由 servlet 规范默认的 url-pattern 处理/,这意味着如果没有指定其他 url 模式来处理请求的 HTTP 路径,则提供静态文件。

这是建议:

  • 不要重叠您的网址模式。
  • 为每个路径使用单独的路径。(你以后会感谢自己的(
  • 不要让 REST 提供静态文件(这是超级低效的,充其量是一个黑客(。

最新更新