每次收到特定的 POST 请求时,我都需要通过 websocket 广播消息。问题是一个 servlet(扩展的 HttpServlet)接收 POST 请求,而另一个(扩展的 WebSocketServlet)处理 websocket 连接。
我不能使用 RequestDispatcher(如果我正确理解的话),因为请求类型不同,而且我需要在 POST 接收的 servlet 中进一步处理请求。
我不知道我是否可以将 ws-request 从第一个 servlet 发送到第二个 servlet,但即使我可以,这似乎也不是正确的方法...
最佳答案
websockets 要求您升级 http 连接,一旦该连接升级,您就不再使用 http,而是使用 websocket。
所以 websockets 没有 http POST 语义的概念
理论上,如果你在 A 点和 B 点之间有两个连接,一个是 http,一个是 websocket,你可以像在服务器中那样协调这种设置自定义,但我认为这将是一个糟糕的设计,太多了参与协调。最好只使用像 cometd 这样的消息库,您可以在其中进行与协议(protocol)无关的来回消息传递。然后你让那个消息库决定它是否应该通过长轮询与 websocket 或 spdy 或 http 或只是简单的 ole http 交谈。
关于http - Tomcat:响应http POST请求的Websocket广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12215822/