从服务器到客户端的消息

Posted

技术标签:

【中文标题】从服务器到客户端的消息【英文标题】:Message to a client from the server 【发布时间】:2009-09-24 10:47:43 【问题描述】:

我必须设计一个在运行 Ruby on Rails 的网站上模拟的 客户端/服务器 系统,它应该像这样工作:

网页浏览器请求页面,一旦打开,服务器就可以向其推送消息

我知道这“自然”是不可能的,但我正在考虑一种在该页面上运行的“java 小程序”,它在端口上侦听要由托管服务器发送的消息。这应该通过打开一种套接字来完成,该套接字侦听服务器可以连接的某个端口以发送其消息。

这可以吗?我是否必须开发一个 java 服务器线程,或者我可以简单地通过它的 IP 地址和端口来寻址客户端小程序并使用来自服务器的任何 Web 服务连接?

谢谢, 卢卡

【问题讨论】:

【参考方案1】:

彗星绝对是你想要的。根据您的需要,您可以托管自己的 Comet 服务器,或使用 SaaS 解决方案,例如 WebSync On-Demand(免责声明:我在那里工作)。使用 SaaS 的东西,您无需实际运行自己的 Comet 服务器即可获得服务器推送功能。

【讨论】:

【参考方案2】:

最简单的方法是使用 javascript 来模拟推送机制。在大多数情况下,使用 AJAX 定期轮询就足够了。也可以看看Comet。

【讨论】:

【参考方案3】:

使用 java 小程序的另一种方法是结合使用 javascript 和称为Comet 的方法。简而言之,Comet 是一种通过 HTTP 启用服务器推送的方法。我并不是真正的 ruby​​ on rails 人,但在 google 上快速搜索 ruby​​ on rails 和 comet 会收集到相当多的有用信息。

【讨论】:

【参考方案4】:

你看过juggernaut

【讨论】:

【参考方案5】:

如果你想走小程序路线,你需要从小程序连接到提供网页的同一台服务器。小程序听不到。一旦建立 TCP 连接,它就是一个 2-way 通道,只要您的协议允许,您可以拉或推。这就是大多数基于 Applet 的聊天客户端的做法。

越来越多的人只是在 Javascript 中使用长轮询。运行一个可靠的长轮询系统非常复杂,我建议你使用一个框架。例如,

http://cometdproject.dojotoolkit.org/

【讨论】:

以上是关于从服务器到客户端的消息的主要内容,如果未能解决你的问题,请参考以下文章

客户端到客户端的短消息

Websockets:从NodeJS websocket服务器到带有WebSocketSharp的C#客户端的多个响应

从客户端的角度来看移动端IM即时通讯的消息可靠性和送达机制

从 Tomcat 9 到客户端的 Websocket 二进制消息拆分为 2 个或更多 tcp 数据包

socket.io 客户端未从服务器接收消息

多播组客户端不从服务器接收消息