2010-12-20 55 views
0

我处于一种情况,我希望能够通知我的网站访问者在服务器上发生的事件。随时从服务器向Web浏览器发送消息的方法?

想:

  • 网站访问者等待那需要很长的时间,并在服务器上的后台运行导出或报告,需要在出口做是为了通知游客。

  • 网站访客在等待来自一个销售代表的聊天消息,需要当消息被发送给他们,通知游客。

我能想到的几个方法可以做到这一点:

  • 保持HTTP连接到服务器 永远开放
  • 不断轮询 HTTP服务器每秒钟检查是否 有新消息
  • 编写Java 小应用程序,该应用程序持有打开 的连接到Java服务器进程

这些都不是特别优雅的解决方案......有没有更好的方法来做到这一点?

回答

0

就我而言,解决此问题的最佳方法是让客户端轮询服务器。我不知道有什么办法强制信息到客户的浏览器。

我认为从某种JavaScript/AJAX轮询将是理想的。

0

据我所知,你不能从java小程序打开套接字(通过网络接口连接)。这是安全政策的一部分。

2

HTTP是一个客户端 - 服务器协议,因此它不允许服务器启动的通信。

对于这种情况有很多解决方法,您已经提出了大部分解决方案。

  1. 最常见和最低技术的技术只是轮询。当您搜索航班时,您可以在大多数在线旅行社查看此信息。
  2. 保持连接处于打开状态,直到超时,然后打开另一个等待服务器发送消息的消息,称为Comet,它的实现方式很多,有时甚至可以使用Java Applet。
  3. 执行此操作的最新标准方法是使用WebSockets,它为您提供全双工(双向)通道,您可以在其中执行任何操作。这是一个全新的协议,它处理HTTP只是为了打开连接。唯一的缺点是它比较新,所以请检查浏览器的兼容性。结帐demos
相关问题