我正在尝试在我的应用程序中实现 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/