标签: comet

Safari中是否可以使用Http Streaming Comet?

通过HTTP Streaming Comet,我的意思是"永远的iframe"/"永远的xhr"变体,在从服务器推送数据后不会关闭连接,而不是标准轮询和长轮询关闭并重新发送新请求每个服务器推送事件.

我查看了dojo.io.cometd包,看起来它们只有轮询实现.我也找到了这个例子,但是即使经过一段时间的修补之后它似乎也不适用于webkit(我让它在其他地方工作).来自safari博客的这个公告似乎表明它可以用xhr,但我找不到任何代码或文档,也无法让它工作.

有没有人知道在Webkit浏览器(Safari和Chrome)中完成HTTP流媒体彗星的技术,脚本,库或演示?

更新

经过一些修补,我发现有两件事需要做,以便通过XHR在Safari中使用http流:

  • 响应需要具有Content-Type:multipart/x-mixed-replace
  • 响应需要在浏览器开始一致地显示更新之前发送一些"噪音"字符.我假设这与填充一些内部缓冲区有关.

更新2

我终于使用iframe技术在所有浏览器中工作了.解决方案的警告是,只有基于WebKit的浏览器才能接收multipart/x-mixed-replace标头.

javascript safari comet

10
推荐指数
1
解决办法
4445
查看次数

socket.io和.Net套接字服务器

如果问题听起来很愚蠢,请原谅,但我不得不问.是否有用C#编写的Node.js的服务器端替代方案?我需要一个客户端框架来充分利用Web套接字,但AFAIK IE不支持Web套接字,也不会支持它的下一个版本.如果可用,socket.io使用Web套接字,否则返回BOSH.所以我将尝试连接到.Net Framework上运行的套接字服务器.

我有什么选择?

comet websocket

10
推荐指数
1
解决办法
7469
查看次数

在Microsoft堆栈上使用Comet/XMPP与WebSocket技术进行实时Web通知和更新的选项?

我正在确定一个项目的架构选项,该项目将呈现用户活动的实时更新(如Facebook) - 登录,照片等.这个的两个主要UI组件是一个自动更新滚动区域,其中将列出新通知(照片)等等,以及一个工具栏,它将更新更新的消息计数等内容.

这方面的竞争者是基于Jabber/Comet/XMPP和WebSocket技术.

彗星阵营:

WebSockets阵营:

由于现有的基础架构是Microsoft堆栈,我宁愿不将基于Java的服务器引入其中.说到这一点,它留下了(一个非常有吸引力的)WebSync(Comet)和SuperWebSocket(WebSockets).然而,Pokein的DLL集成在.Net项目中也是相当无缝的.

.Net有更多真正的生产级WebSocket计划吗?在Microsoft堆栈上采用WebSockets还为时过早,我是否应该支持像Kazing这样的东西?

我还在等待有关我们当前用户群的浏览器类型和版本的报告(检查HTML5兼容性).我怀疑这个数字会很低(较旧的用户群).如果是这种情况,Comet选项将成为赢家.

还有什么需要考虑的事情?

看看像Sockets.IO和其他一些.Net计划,我认为这可能还处于起步阶段,适用于大规模的生产系统.

我可以从使用过上述任何技术和产品的人那里得到一些评论吗?

谢谢.

UPDATE

我仍在寻找一些在生产级别上可靠的优秀WebSocket服务器.我最近找到它后,将XSockets和SignalR添加到了Websockets阵营.Hoewver,目前仍有两个主要竞争者.这可能只是因为他们拥有非常出色的营销团队,可供开发人员使用的优质材料 - API和视频.许多其他实现似乎仍处于新生阶段,其中给出了仅与少数客户端连接的示例.虽然这证明了该技术,但这些演示并未备份有效的有效负载/负载容量数据.Kaazing和LightStreamer确实符合以下要求.

XSockets有一些很好的例子,但同样缺少一些真正的生产指标.

SignalR似乎尚未在真正的生产环境中进行过测试.横向扩展解决方案正在开发中,但似乎还不稳定.期待看到这个项目未来的发展方向.

主要要求是:

  1. 能够实现回退技术(如果HTML5/WebSockets不可用)
  2. 每秒的并发连接数和消息数
  3. 可扩展 - 能够添加额外的服务器/节点以满足更大的流量需求

comet asp.net-4.0 websocket c#-4.0 xmppframework

10
推荐指数
1
解决办法
7344
查看次数

Ajax"是否有新内容?如果有,请更新页面" - 如何在不破坏服务器的情况下执行此操作?

这是一个简单的javascript案例,不断询问"还有吗?" 就像一个驾驶汽车的四岁小孩..但是,就像父母一样,如果你经常这样做,或者同时有太多孩子,服务器会在压力下屈服..

如何解决网页每隔5秒钟查找新内容并允许更多访问者的问题?

javascript mysql ajax comet

9
推荐指数
1
解决办法
1400
查看次数

使用Tornado和Prototype进行异步COMET查询

我正在尝试使用Tornado和JS Prototype库编写简单的Web应用程序.因此,客户端可以在服务器上执行长时间运行的作业.我希望,这项工作以异步方式运行 - 以便其他客户可以查看页面并在那里做一些事情.

在这里我得到了:

#!/usr/bin/env/ pytthon

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options

import os
import string
from time import sleep
from datetime import datetime

define("port", default=8888, help="run on the given port", type=int)

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("templates/index.html", title="::Log watcher::", c_time=datetime.now())

class LongHandler(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    def get(self):
        self.wait_for_smth(callback=self.async_callback(self.on_finish))
        print("Exiting from async.")
        return

    def wait_for_smth(self, callback):
        t=0
        while (t < 10):
            print "Sleeping 2 second, t={0}".format(t)
            sleep(2)
            t += 1
        callback()

    def on_finish(self):
        print ("inside …
Run Code Online (Sandbox Code Playgroud)

python ajax comet tornado long-polling

9
推荐指数
1
解决办法
6330
查看次数

在Firefox下按Escape会导致我的Ajax请求失败.我想阻止这个

我正在开发一个需要长时间运行Ajax请求的Web应用程序.不幸的是,在Firefox下,在请求期间按Escape会导致终止请求及其持有的任何信息.这是相当烦人的,因为如果在错误的时间发生这种情况会导致各种令人讨厌的并发症.因此,我想停用此功能.

我的第一反应是拦截<body>边界处的按键,以确保它们不会到达窗口.为此,我安装了一个[keypress]事件处理程序,仅用于[keyChar]为27的事件,并调用[stopPropagation]和[preventDefault].有一段时间,它似乎正在发挥作用.

然后,我意识到当用户没有点击窗口上的任何地方时它不起作用,因为<body>事件处理程序从未收到过该事件.我试图将我的处理程序附加到<document>或<window>无效,所以我最终添加了一个[load]事件处理程序,并强制将焦点转移到<body>.有一段时间,它看起来像是在起作用.

然后,我意识到当用户正在编辑<input>时,由于某种原因,<body>,<document>或<window>事件处理程序似乎永远不会收到该事件.所以,我添加了另一个[keypress]处理程序,当[keyChar]为27时,在<input>上拦截[preventDefault].

目前,看起来它正在发挥作用.但是,随着我的应用程序中这个错误的历史,我有点悲观.

所以,我想知道是否有更好的,可重复的方法.回想一下这个bug似乎只出现在FF中,所以我非常愿意在这里采用仅FF的方法.

谢谢

javascript ajax firefox comet javascript-events

9
推荐指数
1
解决办法
2151
查看次数

使用Node.js或任何其他Comet解决方案进行流式处理

我正在尝试为内部应用程序构建一个流式传输解决方案,但我正在寻找一个解决问题的空白来克服障碍.目前,在我的工作示例中,我正在使用APE,但由于限制,我无法在主机上运行任何外部进程,因此无法运行APE服务器.

我正在寻找替代方案,但到目前为止我发现的所有东西都需要在服务器上运行进程.

关于该项目的一些细节.

  • 一次将连接约25人
  • 理想情况下,每个人都应该在可用时立即看到更新.
  • 它将在Windows环境中运行,因此C#/ .NET解决方案将优于PHP之类的东西.

任何人都有任何想法,如果node.js能够处理这个或任何其他解决方案?

javascript c# asp.net comet http-streaming

9
推荐指数
1
解决办法
2001
查看次数

GWT和WebSocket /从服务器到GWT客户端的数据推送

有没有什么好的库支持WebSockets并且与GWT兼容?理想情况下,该库将支持WebSockets以及不支持WebSocket的浏览器的后备,例如类似于彗星的方法或轮询.

我目前正在使用GWT-Comet将数据从我的服务器推送到我的GWT Web应用程序.但是,这个库在某些方面有点破碎,似乎不再主动维护.因此,我正在寻找替代方案.

gwt comet websocket

9
推荐指数
1
解决办法
1万
查看次数

如何在不使用setInterval/timeout的情况下检查实时更新?

建立一个社交网络,我正在尝试获取实时通知.目前,该站点使用setInterval每隔几秒发送一次AJAX请求.它看起来像这样:

setInterval ( function(){
    url = base_dir+"/ajax/file.php";
    data = "data=someData";
    $.ajax({
        type: "POST",
        url: url,
        data: data,
        dataType: "json",
        beforeSend: function(x) {
            if(x && x.overrideMimeType) {
                x.overrideMimeType("application/json;charset=UTF-8");
            }
        },
        success: function(JSON){
            // retrieve data here   
        }
    });
}, 5000);
Run Code Online (Sandbox Code Playgroud)

这完全有效,但我非常担心创建服务器过载.我尝试了彗星技术但由于某种原因它发送的请求比上面的代码多得多.有没有其他更有用的技术来推送这些数据?

编辑:为了实现长轮询我使用了以下(使用此处提到的示例:http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery):

(function poll(){
    url = base_dir+"/ajax/file.php";
    data = "data=someData";
    $.ajax({
        type: "POST",
        url: url,
        data: data,
        dataType: "json",
        beforeSend: function(x) {
            if(x && x.overrideMimeType) {
                x.overrideMimeType("application/json;charset=UTF-8");
            }
        },
        success: function(JSON){
            // retrieve data here   
        },
complete: …
Run Code Online (Sandbox Code Playgroud)

javascript ajax comet

9
推荐指数
1
解决办法
2699
查看次数

Websockets可以在移动电话上工作吗?

我目前正在考虑创建一个软实时移动电话webapp,但是当我开始研究websockets时,我发现了大量关于在移动电话上丢弃的websocket连接的恐怖故事:

通过3G连接的WebSocket

http://blog.hekkers.net/2012/12/09/websockets-and-mobile-network-operators/

这仍然可以被认为是一个问题吗?

相关地,我怀疑长轮询客户端可能是实现类似功能的好方法,但我想知道我可能遇到的移动特定问题.

到目前为止,我已经读到长轮询请求可能会对电池寿命产生相当大的影响.我还听说iOS以某种方式限制了对单个服务器的连接数量,这可能是个问题.

有没有人在使用实时组件的移动应用程序上工作?如果你有,你遇到了什么挑战,你是如何克服它们的?

mobile comet long-polling websocket ios

9
推荐指数
1
解决办法
3853
查看次数