javascript - 在客户端实现comet

标签 javascript jquery comet

我正在尝试在我的应用程序中实现 comet,但由于缺乏 JavaScript 经验,我不确定如何在客户端进行操作。

当服务器收到请求时,它只是保持打开状态并在必要时向其中写入数据:

def render_GET(self, request):
    print "connected"
    request.write("Initiated\r\n")
    reactor.callLater(random.randint(2, 10), self._delay, request)
    return NOT_DONE_YET;

def _delay(self, request):
    print "output"
    self.count += 1
    request.write("Hello... {0}\r\n".format(self.count))
    reactor.callLater(random.randint(2, 10), self._delay, request)

到目前为止,我一直在客户端使用 jQuery,但我不知道如何使其与服务器一起工作。 I've been looking at the jQuery.AJAX documentation并且没有一个回调说“嘿!我刚刚收到一些数据!”,他们只说“请求已完成”。

我认为 dataFilter() 函数正是我想要的,因为它可以让您在请求完成之前处理原始数据,但它只能让您在刚刚之前执行此操作请求完成,而不是在您收到数据时完成。

那么如何通过open请求持续接收数据呢?正如您在 python 示例中看到的那样,每条数据都用 \r\n 分隔,因此我希望 JavaScript 的行为就像行接收器一样。这可以用 jQuery 实现吗?还是我必须直接使用 XMLHttpRequest/ActiveXObject?是否有一个(简单、轻量级)库可以为我实现线路接收器?

我希望听到有关现有库的信息以及如何自己实现它,因为到目前为止我在 cometd 库方面运气不佳,此时我希望只需编写我需要的代码,而不必费心整个库。

最佳答案

在查看了其他一些 Comet/jQuery 问题后,我偶然发现了这个:http://code.google.com/p/jquerycomet/ ,它看起来是一个 jQuery 插件,可以满足您的需求。如果您想了解它是如何工作的,我会深入研究源代码。

我在哪里找到了一些重要信息的问题是 here .

关于javascript - 在客户端实现comet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3875509/

相关文章:

javascript - 如何使用 JQuery 使音频仅播放一次?

java - Cometd,Spring 安全 : Currently authenticated user not available inside a Listener

javascript - 从数据库获取数据时处理null

javascript - 图像 src 在 jquery 中不起作用

打开和关闭时缩放到某个位置的Javascript模态窗口

javascript - Chrome (WINDOWS) 在警告消息后缺少光标

javascript - 如何根据JS输出显示iframe

javascript - 简单图像幻灯片上的随机动画

php - 哪个是最好的 COMET 服务器?

php - 在 COMET 中将数组传递给 Javascript