[英]How should I implement the C# server side portion of long-polling for ajax requests?
我有一个架构,涉及浏览器每隔3秒通过ajax轮询更新,我想将其更改为长轮询 。
我想要1,2 ... {n}个客户端进行长轮询,等待更新,并在服务器上发生一些事情,以通知等待的客户端返回。 我的第一个想法是使用EventWaitHandle
,如果我只想支持1个客户端,我可以轻松地做到这一点。 我只有一个AutoResetEvent
WaitHandle
, WaitOne
会阻止客户端,可能是超时,也许不是。 无论哪种方式, AutoResetEvent
只允许我支持1个客户端(因为它只唤醒1个等待线程),我想要n个客户端。
我很确定我需要使用ManualResetEvent
WaitHandle
,但是我不确定何时在Set
它之后调用Reset
(当唤醒线程时)。 我应该只是Thread.Sleep
Set
和Reset
之间的任意数量?
在伪代码中,唤醒逻辑将是
ManualResetEventWaitHandle
Set
Reset
所有等待的客户端都已收到更新 它的第3行我很难过。 目前我正在抛弃拥有客户端/服务器维护的LastTxID
并可能使用2个等待句柄的想法。 然而,在我对这个实现感到疯狂之前,我想在这里获得反馈,看看他们将如何实现唤醒逻辑。
编辑:假设我已经解决了与最大并发用户相关的问题,通过调整IIS或通过WCF或其他解决方案托管。 我只想专注于清醒的逻辑。
一个想法,在伪代码中
我很想得到一些反馈
对这种方法的看法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.