是否可以将所有 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 提供静态文件(这是超级低效的,充其量是一个黑客(。