从服务器到客户端的消息
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#客户端的多个响应