我对构建类似于Twitter构建的流API(只读)感兴趣。从服务器到客户端,数据只会是单向的。客户端不一定是Web浏览器,而只是技术上可以保持持久HTTP连接打开的任何东西。我很确定Twitter的流API正在做的不是WebSockets而不是COMET。我想知道他们部署的技术/策略是否具有可以学习的w3c规范。我不一定看到他们在W3C上的策略有任何链接 - 所以它可能是“自定义”的东西,但是正确的方向上理解构建这个服务器端HTTP流支持所涉及的流行语和协议的任何一点都会很棒。
答案 0 :(得分:2)
答案 1 :(得分:1)
基于此slide,Twitter流媒体API使用 Jetty 服务器。那么普通的阻塞IO工作呢?基本上客户端发出请求告诉它感兴趣的推文,服务器响应但不关闭响应。每当有新的推文进入时,服务器都会收到通知并将数据写入(并刷新)回客户端,但不会再关闭响应。
来自第20页的说明:
服务器如何在内部工作? Hosebird在JVM上运行。它的 用Scala写的。并使用嵌入式Jetty网络服务器来处理 前端问题。我们为每个过程提供8个核心和大约12个核心 记忆。他们每个人都可以向许多客户发送大量数据。
免责声明:我不熟悉这个话题,所以我可能完全错了。我所说的是基于我的感受。这是一个有趣的话题。
答案 2 :(得分:0)
您可能正在寻找发布/订阅服务。关于此的一些好消息是http://en.wikipedia.org/wiki/Publish/subscribe。 您可以将服务设置为只读,并丢弃来自客户端但未连接到有效通道的消息。
可以使用redis http://redis.io/topics/pubsub和一个小应用程序来连接到正确的通道。
可以使用其他实现 RabbitMQ http://www.rabbitmq.com/tutorials/tutorial-three-python.html 我确信还有其他实现,但我现在并不知情。
这是指向pub / sub http://www.w3.org/community/pubsub/
的w3c链接