【问题标题】:Implementing Server Push实现服务器推送
【发布时间】:2010-11-28 08:15:53
【问题描述】:

了解服务器推送here
我想将数据从我的 Web 应用程序实时推送到客户端。
我将 TCP 套接字视为选项之一。
对于 HTTP,我在here 上找到了各种 Java、PHP、Python 和其他框架。 但是我不知道这些是否支持推送。

  • 您会选择哪些选项和框架 建议实施服务器推送?
  • 您会提倡使用哪种语言来实现相同的功能,为什么?

【问题讨论】:

  • 一个框架不“支持”推送。所有推送都是一个长请求,其中包含一个睡眠,它会定期向客户端发送(推送)更新。我认为框架是否支持它应该不是你关心的问题。
  • @ryeguy:TCP 套接字实现会比 HTTP 长轮询更有效吗?
  • 好吧,假设您只使用基本的 HTML(而不是可以使用实际套接字的 flash),您仍然需要执行 HTTP 请求。但是,如果您的意思是构建自己的服务器来接受这些类型的请求,是的,这样会更好。 Facebook 在 erlang 中为他们的聊天构建了他们的彗星服务器。

标签: java php python ruby server-push


【解决方案1】:

我现在正在使用 Orbited,非常棒!

如果您在进行聊天或订阅类型的内容,请使用 stompservice 并进行跟踪。

如果您要进行 1 对 1 客户端映射,请使用 TCPSocket

如果你愿意,我可以给你一些代码示例。

【讨论】:

  • 我的实现有多个客户端连接到我的服务器,它们可能会连接好几天。如果是这样的话,TCP 套接字在这里会更好吗?你会推荐什么框架/技术?
  • 客户端需要相互通信吗?如果您的服务器正在向客户端发送定制的数据,而不是客户端在它们之间发送数据或服务器广播客户端订阅的数据,则 TCP 套接字很好。对于上述情况,请使用 Orbited/STOMP/MorbidQ。否则 TCPSocket 很好,你只需手动编写服务器端套接字的东西。根据您的服务器需要做的事情的复杂性,我听说有人使用 twisted 在套接字上做一些繁重的工作,但我还没有这样做。
  • 套接字的好处是你可以用你喜欢的任何语言编写服务器。就我个人而言,我倾向于使用 Orbited + Python + Django,这对我来说非常有用。
  • 你说的TCPSocket是指Orbited还是广义的Socket?
  • TCPSocket 是 Orbited 特定的浏览器套接字实现。在服务器端,你可以使用任何你想要的套接字东西。直接或通过其他框架,如 twsited。
【解决方案2】:

Orbited怎么样,很好,被Echowaves使用了

【讨论】:

  • 由于 Orbited 在 Web 服务器上打开 TCP 套接字,我是否必须为此使用 VPS?..如果我使用共享主机,可能 Web 主机可能不允许套接字保持打开和运行。 ..
【解决方案3】:

Comet 是您想要的协议。 Comet 最好的实现是一个更难的调用。

如果您对 Java(或者,我猜是 Jython)或 .NET(IronPython 有可能)没问题,我怀疑(没有已经广泛尝试过所有这些!-)@ 987654321@必须是主要竞争者。这是典型的“免费增值”产品——您可以获得免费(“就像免费啤酒一样”;-) 版本,或者您可以尝试昂贵的网络版,或者更昂贵的企业版;功能比较是here(例如,免费版:无 https、不超过 10 个并发用户、无 .NET)。

【讨论】:

  • Comet 工作还是 HTTP 工作?在 TCP 套接字上是否有类似 Comet 的实现?
  • 是的,Comet 基于长期持有的 HTTP 请求,而这些请求当然又运行在 TCP 套接字之上。参见例如en.wikipedia.org/wiki/Comet_(programming) 非常基础。
  • 您是否看过 Comet 实现服务器端的良好比较?我目前正在玩cometdproject.dojotoolkit.org
  • 在没有网络套接字的情况下,我更喜欢 BOSH 而不是 Comet。
【解决方案4】:

好的,我在我的项目中使用带有PokeIn comet ajax 库的 ASP.NET。另外,我在JAVA下尝试了Atmosphere。我最后的选择是PokeIn。因为只有服务器推送支持并不能解决问题。您将需要某种客户端到服务器的对象序列化和对象生命周期管理。 PokeIn 满足了我的所有这些需求。

【讨论】:

    【解决方案5】:

    【讨论】:

      【解决方案6】:

      我个人有偏见,但我喜欢WebSync, for IIS/.NET。它与 IIS 集成,因此无需其他服务器软件,只需一个 dll 即可添加到您的项目中。

      【讨论】:

        【解决方案7】:

        我相信 xmpp 实现是很多大公司都在使用的实现,但常见的是也使用彗星服务器。

        在 python 中的很多实现,你可以用谷歌搜索。

        【讨论】:

          【解决方案8】:

          你试过StreamHub Push Server吗?

          【讨论】:

          • 不是真的,Alex Martelli 在他的帖子中提到了这一点......但免费版本只允许 10 个并发用户......对吗?
          猜你喜欢
          • 2011-07-14
          • 1970-01-01
          • 1970-01-01
          • 2015-10-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-10
          相关资源
          最近更新 更多