服务器端推送的可扩展解决方案?

3 投票
3 回答
673 浏览
提问于 2025-04-16 02:07

我想实现一个机制,提供一个RESTful API,让客户端可以向服务器注册对某个主题的兴趣,并在注册后从服务器接收异步通知。在企业级的消息架构中,这种方式被称为发布/订阅模式。

在桌面应用程序中,这个功能比较容易实现,但在网页应用程序中,这就变得有点困难了。

有没有什么(最好是开源的)框架或库,可以让网页应用程序使用发布/订阅模式呢?

服务器端的技术可以用以下任意一种语言:C、C++、PHP、Python、Ruby。

我使用的是Linux Ubuntu 10.0.4。

3 个回答

0

我建议你看看STOMP协议,还有它的Python客户端(我用的是stomp.py)。这些应该能满足你所有的需求。

2

如果你提前知道会有很多人(或者应用程序)想要在某个话题上收到通知,而另一方面你又只有几个不同的话题,那就考虑使用拉取技术吧。

像RSS和Atom这样的技术虽然是拉取的方式,但还是很成功。原因是:你不需要在服务器上管理订阅的人,也不用去检测谁不再感兴趣(比如某个用户长时间不在线),或者去想办法把所有数据发送给订阅者。使用推送技术的话,服务器需要做的事情很少,而客户端每次只需要拉取少量数据。

拉取方式稍微消耗一点带宽,但带宽其实很便宜,而它可以帮你节省很多CPU和软件维护的成本,这些可是相对昂贵的。

3

看看这个叫做pubsubhubbub的协议:http://en.wikipedia.org/wiki/PubSubHubbub

这是这个项目的源代码:http://code.google.com/p/pubsubhubbub/

撰写回答