0

我有一个需要相互通信的 Web 应用程序和一个 Web 服务。这种通信必须是双向通信,因为 Web 应用程序可以将发生在接口处的事件发送到 Web 服务。Web服务可以将第三方收到的事件发送到Web应用程序部分。那么,我应该遵循什么设计呢?如何使这种通信成为双向通信?

问候, 安舒尔

4

1 回答 1

0

您可以通过使用 Comet 模型(有时称为反向 AJAX)来做到这一点。它是通过长轮询或打开到 web 服务的持久连接来实现的。

在长轮询模式下,客户端打开到 Web 服务的连接并等待服务器的响应。当有事件从服务器发送到客户端时,服务器只需使用该预先存在的连接进行响应并关闭连接,然后客户端读取响应,并立即打开一个新连接以侦听更多事件。

在流模式下,连接是持久的,不会在每次服务器事件后关闭。可以使用带有隐藏 iframe 的 HTTP/1.1 分块响应来完成此操作。

无论客户端实现如何,请注意使用 Comet 可能会导致服务器端打开过多的连接。在决定网络服务器堆栈/网络框架时,您应该考虑到这一点——理想情况下,它应该使用非阻塞 I/O 和延续来将长连接与服务器线程分离。

一些 Web 框架已经内置了 Comet 支持:PlayLift

于 2013-09-13T11:20:46.643 回答