标签: server-push

客户端(桌面应用程序)提取数据......但我希望服务器(Web应用程序)推送数据

我有一个客户端 - 服务器应用程序 - 其中服务器本质上是一个ASP .NET Web应用程序,分布式客户端是桌面应用程序.

当客户端有新数据时,客户端需要从服务器接收一些数据.现在,这样做的方式是 - 客户端每x分钟(比如说2分钟)不断查询Web服务,并不断检查客户端是否有新数据.

理想情况下,它应该工作的方式是桌面应用程序应该在可用时接收更新,它不需要从服务器拉出; 相反,服务器应该能够推送到客户端.

我如何做到这一点 - 考虑到解决方案的架构 - Web应用程序需要将数据推送到同一网络(LAN)中的桌面应用程序(客户端)?

architecture client-server server-push .net-2.0

6
推荐指数
1
解决办法
1678
查看次数

反向AJAX?数据更改是否可以"推送"到脚本?

我注意到我的一些重量级的网站(我访问的网站,而不是我建的网站)都有一些自动刷新功能.例如,在GMail中,如果我收到新消息,我会看到没有页面重新加载的新消息.基于Facebook浏览器的IM客户端也是如此.据我所知,没有任何java applet处理服务器 - 浏览器绑定,所以我只能假设它是由AJAX完成的,也许是一些我不知道的元素.所以我最好的猜测是,它采用以下两种方式之一:

  1. javascript对服务器端脚本进行稳定的"ping",检查可能可用的任何更新(这可以解释为什么这些页面中的某些页面会抓取任何其他重载页面).要么

  2. javascript无所事事,服务器端脚本实际上"推送"浏览器的任何更新.但我不确定这是否可行.我想有些类型的AJAX函数还在ping,但它只是简单地问"任何更新?" 并且服务器脚本有一个简单的布尔值,表示"nope"或"我很高兴你问." 但是如果是这种情况,任何数据更改都需要直接调用脚本,以便它准备好数据更改并对该布尔函数进行更改.

那可能/可行/它是如何工作的?我想象的是:

有人向服务器发送电子邮件/ IM/DB更新,服务器使用脚本的URL和一些相关的GET变量调用脚本,脚本记录更改并更新"可用更新"变量,AJAX获得响应事实上,AJAX运行其正常的"更新页面"功能,执行正常的更新脚本并将它们输出到浏览器.

我问,因为js只是做一个持续检查似乎非常低效,这需要a)服务器每1.5秒做一次工作,b)我的浏览器每1.5秒做一次工作,这样我就可以说"哦,小伙子,我有一个IM!就像一个真正的IM客户端!"

ajax asynchronous server-side server-push

6
推荐指数
1
解决办法
1358
查看次数

实施服务器推送

阅读关于服务器推送这里.
我想实时从我的Web应用程序将数据推送到客户端.
我一直在寻找TCP套接字作为选项之一.
对于HTTP,我在这里找到了各种Java,PHP,Python和其他框架.但是我不知道是否有任何支持Push.

  • 您建议实施服务器推送的选项和框架是什么?
  • 您会倡导哪种语言来实现相同的原因?为什么?

php ruby python java server-push

6
推荐指数
1
解决办法
3192
查看次数

Rails 3:实时服务器推送?

我正在尝试编写一个Rails 3应用程序,其中服务器可以实时将数据推送到多个客户端.

我听说过Juggernaut,但我也听说它不适用于Rails 3.我尝试过APE(AJAX Push Engine),但我没有太多运气.

我对Rails很新.我找不到很多涉及实时推送和Rails 3的指南.我正在寻找一个免费的,简单的(如果可能的话)解决方案.如果有人能指出我正确的方向,我会非常感激.

server-push ruby-on-rails-3

6
推荐指数
2
解决办法
7901
查看次数

使用服务器推送在复杂页面中进行多用户编辑

我正在将Zend Framework用于名为Pricetag的应用程序,我们正在考虑添加对实时多用户编辑的支持.基本上,这个想法是,在每个步骤中,能够与其他在线用户分享您正在编辑的内容(很像Pivotal TrackerTrello).

这是我们所拥有的四个页面中最复杂(以编程方式说)的屏幕截图:

Pricetag Step 2截图

内部HTML并不重要(但是,如果你想要检查它,你可以注册为免费用户),基本上是一些输入和使用javascript添加/删除这些块("可交付成果"和"任务")的能力.

我假设我需要一些方法让服务器通知每个在线客户端页面的变化.我每次更改时都会发出请求(每次更新时右侧的白色块都会更新),但我不确切知道其他用户将如何接收这些信息.

每隔5秒左右轮询服务器似乎非常错误.该网站使用PHP,是否足以做到这一点?我应该与服务器中的单独脚本连接吗?是否已经构建了Zend Framework模块,即使我先向Google询问,我仍然缺少这个模块?

php zend-framework server-push

6
推荐指数
1
解决办法
358
查看次数

Comet与当前技术的兼容性

我听说我可以使用Comet作为服务器推送技术和我的Ajax代码来提高我的Web应用程序的性能.

这款Comet技术有多成熟?

是否所有Web服务器,编程语言和浏览器都支持它?

使用Comet有什么缺点?

ajax comet http server-push

5
推荐指数
1
解决办法
1636
查看次数

通过实例了解彗星

它的功能是所谓的"服务器推送",谷歌波似乎也在利用.

有人可以通过代码片段解释这个概念它在Web应用程序中的实际工作方式吗?

implementation comet server-push

5
推荐指数
1
解决办法
416
查看次数

ASP.NET MVC的AsyncController可用于服务大量并发挂起请求(长轮询)吗?

Node.js,Tornado和Twisted等框架允许开发人员创建支持大量并发挂起请求(10k +)的服务器推送应用程序.据我所知,他们都是通过不创建线程来为每个挂起请求提供服务来实现这一点.

AsyncController可用于服务大量非活动并发请求吗?

如果是这样,是否有任何相当大的ASP.NET MVC网站使用这种方法来创建长轮询应用程序?

asp.net asp.net-mvc server-push long-polling asynccontroller

5
推荐指数
2
解决办法
3344
查看次数

Android浏览器的备用服务器Push/Comet实现,不发送4KB消息?

我正在开发一个使用Comet Hidden iFrame技术将数据从服务器推送到移动浏览器的Web应用程序.

在Mobile Safari上一切正常,但Android更加痛苦.它似乎需要从服务器发送4 KB消息,以便将消息记入帐户.这是针对每条消息而不仅仅是第一条消息.

有些人尝试使用XMLHttpRequest流媒体实现Comet但具有相同的4KB问题(http://code.google.com/p/android/issues/detail?id=13044)

有没有人设法在Android浏览器上实现Comet技术而无需将消息填充到4KB?

在Android 2.1,2.2上测试过

即使在Android 4.0版本http://caniuse.com/eventsource上也似乎不支持服务器发送事件

websocket http://caniuse.com/websockets也是如此

谢谢

-seb

android comet server-push websocket http-streaming

5
推荐指数
1
解决办法
2213
查看次数

如何在OkHttp中实现接收服务器推送?

以下问题不OkHttp支持HTTP / 2服务器推送?,是否有任何示例可以说明如何实现在客户端接收推送内容?

OkHttpClient,请求,响应和Http2Connection的互动将如何呢?我知道Http2Connection具有PushObserver,但是它将如何与OkHttpClient和Request / Response一起使用?

考虑下面的代码片段。有一个客户和一个请求。他们将如何与PushObserver一起使用?

    OkHttpClient client = getOkHttpClient();
    Request request = new Request.Builder()
            .url("https://nghttp2.org:443") // The Http2Server should be running here.
            .build();
    try {
        Socket socket = client.socketFactory().createSocket();
        Http2Connection con = new Http2Connection.Builder(true)
            .socket(socket)
            .pushObserver(new PushObserver(){

            @Override
            public boolean onRequest(int streamId, List<Header> requestHeaders) {
                // do something here
                return true;
            }

            @Override
            public boolean onHeaders(int streamId,
                List<Header> responseHeaders, boolean last) {
                // do something here
                return true;
            }

            @Override
            public boolean onData(int streamId, BufferedSource source, …
Run Code Online (Sandbox Code Playgroud)

server-push okhttp http2 okhttp3

5
推荐指数
1
解决办法
741
查看次数