TL; DR:是否有长焦点整合的Angular示例? (例子,特别是Comet示例会很好!)
我们当前的应用程序使用Angular和Comet。客户端发送长轮询请求保持打开状态,直到服务器返回数据。当服务器返回数据时,数据有效负载可能有多条消息用于不同的通道'。
开箱即用的Comet JS代码我们使用jQuery的$.get(), $.post()
方法来进行长轮询请求。
Angular基于jQuery的简易版本,并通过Angular的$.get()/$.post()
对象与$http
相比增加了许多(与角度相关的)魔法。
我已经被告知Angular的$http
对象,并且它返回的承诺与基于消息的前端不兼容,但我不相信
他们是不相容的吗?
我在想一个可以编写Comet的不同$httpProvider
,这将提供一个$ http对象,基于URL可以确定它是否应该在正常的ajax模式或长轮询模式下运行。 / p>
这里的想法是,通常每个Comet通道都有一个消息监听器,并且监听器有一个它在消息中调用的回调。
对我来说,这似乎是一种伪装的承诺。通常,这个想法是为每个渠道创造一个承诺。当$ http对象处理长轮询请求时,当服务器响应数据时,它将知道如何将有效负载解析为每个通道的消息,然后解析每个通道(现在是Angular世界中的一个承诺)。解析每个通道会调用channels / promises then()函数。这是否通过侦听器和回调实现基于消息的行为?这些只是一样的东西,但名字不同吗?
我正在考虑采用这种方法并可能对其进行原型设计。但在此之前,这是否有意义?
这些承诺如何在Angular HTML模板中解决,我仍然不确定。
是否已有Angular与长轮询集成的示例?
我找不到任何。
答案 0 :(得分:0)
“这是否有意义?”,并不完全。
看来你需要客户端的是:
当我读到这个问题时,似乎你可能没有明确区分(1)和(2)。
(1)将是$http()
请求,它返回一个承诺。
(2)将是一个定制函数,只要满足请求(无论何时履行承诺),都会调用。
因此,每个轮询周期将严格包含一个承诺,但一个或多个广播事件,将由固定的侦听器响应。
它就像一个散射枪,每当它被触发时就会发射弹药筒(以及一组喜欢射击的自愿目标)。
请注意,在这个定义级别,整个事物在概念上与常规短轮询相同,长轮询仅在请求和响应的时间上有所不同(这样服务器处于明显的控制中)。