1

我创建了一个以网站形式提供服务的 Web 应用程序。

我计划创建一个 WebServlet API 以允许其他软件(网络或桌面)轻松集成我的服务,调用简单的操作如下:

http://www.server_name.com/APIServlet?ACTION=CreateUser&DATA={"username":"username@gmail.com","password":"some_password"}

问题是 API 还应该提供一种在给定更改发生后立即向 API 客户端异步发送数据的方法。

我知道 Channel API 是实现这一点的更好方法,但 API 用户实现起来相当复杂,特别是在非 javascript 应用程序中。

在我看来,需要 API 用户付出较少努力的更好的解决方案是“Long Polling”,它提供一个 API 操作来保持响应,直到服务器有东西要返回或发生“超时”。前任:

    http://www.server_name.com/APIServlet?ACTION=WaitMessage&DATA={"sessionId":"12kdj45jsdj"}

但是 AFAIK 这个解决方案是不可能的,因为 appengine 将请求响应限制为 30 秒。

如何以简单的方式使用 HTTP 请求实现异步服务器 -> 客户端通信。

4

2 回答 2

0

这些是可用的不同方法

  1. WebSockets(HTML5 的一部分)
  2. 长轮询和彗星
  3. 轮询

使用 Websockets 将是最简单的方法。但是为了让它工作,我们应该确保客户端浏览器是最新的并且服务器端也支持它。在 tomcat 7.0.32 及更高版本中提供了一个名为 WebSocketServlet 的新 servlet。

PS:我不确定应用引擎是否能够实现 websocket 服务器端。

长轮询和轮询是较旧的方法。但是由于浏览器兼容性问题,它们仍然被使用。

您可以使用Atmosphere 框架,其中包含用于 websockts 、长轮询和轮询的回退机制。

于 2013-01-30T14:24:50.773 回答
0

GAE 上唯一的异步服务器到客户端通信可通过Channel API获得。不幸的是,它只是 javascript,因此您只能在浏览器中使用它。

于 2013-01-30T16:46:52.213 回答