4

我想使用推送机制创建一个应用程序。即,在没有用户交互的情况下,我们可以在服务器发生某些事情时将消息推送到客户端,类似于 gmail 对他们的电子邮件和 facebook 最近的活动消息所做的事情。

我如何使用java实现这个。

请帮助,在此先感谢。

4

4 回答 4

0

或者只是使用Pusher API。您使用他们的 REST 服务发布事件,然后 Pusher 通过 websocket 将这些事件传递给所有客户端。该 API 易于使用并支持多个渠道。

于 2012-05-16T14:18:04.070 回答
0

虽然答案较晚,但这是我对如何进行服务器推送的看法。您可以使用与 nodejs 结合的 socket-io 框架。socket-io 客户端必须侦听事件,而 nodejs(服务器)上的 socket-io 可以发出(推送)消息,客户端(网页中的 socket-io)接收它并可以做任何想做的事情。有一个问题,你应该知道一点 javascript。socket-io 协议也与传输无关!

这是链接

关于使用 socket-io 和 nodejs 的优秀文章

套接字-io

节点

于 2013-07-19T00:41:01.113 回答
0

您需要的称为 Comet aka Reverse Ajax,有多种此类实现,包括付费和免费的。

根据您选择的编程语言,您可以选择以下之一:

  1. Tomcat 反向 Ajax。
  2. 码头彗星。
  3. DWR
  4. Streamhub(付费但有社区版)
  5. 猿。(免费不适用于 Windows)
  6. 大气(在 Primefaces 中使用)
  7. Dojo 的 CometD。
于 2012-05-16T14:14:06.450 回答
0

实现这一目标的一种技术是利用长轮询方法。

客户端打开与服务器的连接,但服务器不会立即返回结果,而是将连接保持一段时间并延迟其响应。

如果发生某些事情,会导致服务器响应触发(新邮件、新即时消息...),服务器最终会响应客户端。或者,在请求超时运行的情况下,服务器只传递一个空结果。

在这两种情况下,客户端都会处理响应并立即发出新请求,以便整个事情重新开始。

在 Java 中,客户端可能会执行简单的请求。服务端线程要合理,timeout不宜设置过长。

另外,请看一下这个 SO 线程

每个 webserver/appserver 都有一个线程池,比如 10 个用于处理 web 请求的线程,如果所有这些线程都将进入“睡眠”状态,则在其中一个“睡眠”存在之前不会为其他 web 请求提供服务。

于 2012-05-16T14:11:45.093 回答