Tomcat:响应 http POST 请求的 Websocket 广播
Posted
技术标签:
【中文标题】Tomcat:响应 http POST 请求的 Websocket 广播【英文标题】:Tomcat: Websocket broadcast in responce to http POST request 【发布时间】:2012-08-31 12:56:04 【问题描述】:每次收到特定的 POST 请求时,我都需要通过 websocket 广播消息。问题是一个 servlet(扩展的 HttpServlet)接收 POST 请求,而另一个(扩展的 WebSocketServlet)处理 websocket 连接。
由于请求类型不同以及我需要在 POST 接收的 servlet 中进一步处理请求,我无法使用 RequestDispatcher(如果我正确理解的话)。
我不知道我是否可以将 ws-request 从第一个 servlet 发送到第二个,但即使我可以,它似乎也不是正确的方式......
【问题讨论】:
【参考方案1】:websockets 要求你升级一个 http 连接,一旦这个连接升级,你就不再使用 http,而是使用 websocket。
所以 websockets 没有 http POST 语义的概念
理论上,如果您在 A 点和 B 点之间有两个连接,一个是 http,一个是 websocket,您可以像在服务器中那样协调这种设置自定义,但这将是一个糟糕的设计 imo,太多了涉及到协调。使用像 cometd 这样的消息库要好得多,您可以在其中进行与协议无关的来回消息传递。然后你让那个消息库决定它是否应该使用长轮询来处理 websocket 或 spdy 或 http 还是只是普通的 ole http。
【讨论】:
以上是关于Tomcat:响应 http POST 请求的 Websocket 广播的主要内容,如果未能解决你的问题,请参考以下文章
Okhttp3、http2多路复用POST请求高峰负载时响应时间长
通过使用Socket来向Servlet服务器发送GET和POST的HTTP请求协议以及响应案例
Tomcat 7:RequestDumperFilter 未记录 HTTP 请求/响应正文