【问题标题】:Embedded Jetty 9 - I need Websocket Server, REST Servlet, and File ServerEmbedded Jetty 9 - 我需要 Websocket 服务器、REST Servlet 和文件服务器
【发布时间】:2019-09-17 17:46:04
【问题描述】:

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

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

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

【问题讨论】:

    标签: embedded-jetty jetty-9


    【解决方案1】:

    是的,如果 HTTP 路径不同,则最简单。

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

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

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

    这是建议:

    • 不要重叠您的 url 模式。
    • 为每个使用单独的路径。 (你以后会感谢自己的)
    • 不要让 REST 服务于静态文件(这是超级低效的,充其量是一种 hack)。

    【讨论】:

      猜你喜欢
      • 2013-04-20
      • 2013-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      • 2016-01-24
      • 2016-03-18
      相关资源
      最近更新 更多