【问题标题】:How do server-client push/pull connections work?服务器-客户端推/拉连接如何工作?
【发布时间】:2011-10-09 05:02:48
【问题描述】:

我对财务数据如何从服务器流式传输到客户端非常感兴趣。我经常在这里使用“推拉”一词。我想知道是否有人可以给我一个例子(最好是在 Java、C# 或 Javascript 中)这实际上是如何实现的?每当我在家里编写业余爱好项目时,我经常会查询一个 URL(包含价格)并在 while(true) 循环内不断调用它,使用 thread.sleep(x),即使价格没有变化。

提前致谢

【问题讨论】:

标签: c# java javascript html json


【解决方案1】:

这是两种基于网络的 PUSH 技术。

至于浏览器支持:

  • Chrome/Safari/Firefox6 支持这两者。
  • Opera 支持 EventSource 和 Websockets,但默认禁用后者。
  • Firefox 4 支持 websockets,但默认禁用它。
  • IE

有很多拉取技术,包括 HTTP 和 ajax。

【讨论】:

  • 谢谢(我尝试回复您的第一条评论,但没有成功)
  • 有没有 Java 或 C# PUSH 技术?
  • @David 他们是 Java 或 C# 你只需要实现服务器。 Google for .NET WebSocket 或 Java Websocket。语言完全中性
【解决方案2】:

不知道您所说的“流式金融数据”是什么意思,但推/拉的概念不仅限于金融部门 :)

一般来说,拉取策略意味着客户端正在通过预定义的通信通道(在您的情况下是指向现有已知 URL 的套接字)主动获取数据并轮询该通道以获取新信息。

与此相反,您有推送策略,您会收到任何更改的通知,并提供通信渠道并将其注册到连接的合作伙伴。例如。你有一个网络服务,你的连接伙伴会在他认为合适的时候向该网络服务发布信息。有关此概念,请参阅 http://en.wikipedia.org/wiki/Observer_pattern

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    如果客户端通过 HTTP 工作,推送总是由客户端发起,即客户端请求新的更新,服务器发送它们。如果客户端是瘦客户端(即在浏览器中运行的应用程序),现代方法是使用 AJAX 检索数据而不刷新页面。但同样主动权在客户端,但用户只是看不到它。它是使用javascript按计划完成的。

    最“实时”的方法是使用 HTTP 隧道技术:客户端对映射到不关闭连接的 servlet 的特殊 URL 执行 HTTP GET。它只是保持打开状态。当它有东西要发送给客户端时,它会写入流。因此,您获得了服务器到客户端的推送,但仍然由客户端执行初始连接。

    【讨论】:

    • Websockets 和事件源是实时的。
    • 您好,这个服务器到客户端的 HTTP GET 方法有名称吗?谢谢
    【解决方案4】:

    你正在拉。 Pulling 是当客户端向服务器请求数据并且服务器对该请求进行操作时。

    如果服务器在收到新数据时会向您发送数据,那将是push

    所以区别是:push是服务端发起的,pull是客户端发起的。

    财务数据通常通过TIBCO Rendezvous 等软件传输。发布者将消息发送到守护程序,订阅该主题的侦听器从守护程序获取消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-06
      • 1970-01-01
      • 1970-01-01
      • 2020-06-26
      • 1970-01-01
      • 2012-03-27
      • 2012-05-22
      • 2016-12-10
      相关资源
      最近更新 更多