我有一个使用Ajax Comet长轮询的C#ASP.Net(非MVC)项目。网页对实施IHttpAsyncHandler的类所处理的端点进行HTTP调用。如何通过WebAPI2来完成C#Ajax Comet?
如果有什么报告(n秒内)的网页,一个空的HTTP响应发送,网页重新调用。如果有东西要发送,更新发送,网页处理和重新调用。这是非常标准的推送技术,并且工作得很好。
现在我尝试添加API端点,使用WebAPI2,非MVC。我有基于ApiController类的同步控制器工作。
我想设置推送技术的API调用,让API的用户不必轮询更新。
与上述方法类似,接收API端点调用并存储上下文。如果超时过期,则该呼叫将返回空,并且呼叫方需要再次呼叫。如果数据在超时内更新,数据将返回给调用者,然后调用者需要再次调用并等待更多更新。
问题是似乎没有ApiController的异步版本。其目的是释放正在处理API调用的线程,将其返回到池,然后当有数据可用或超时过期时,将使用工作线程返回响应。
我怎样才能建立一个ApiController使线程处理呼叫被释放,呼叫上下文存储,我可以把在稍后的时间点到调用的响应?
你为什么不使用SignalR? –
长轮询工作效率很高,特别适用于质量差的连接。它运作良好。我只需要弄清楚如何挂起WebAPI2连接,就好像它是一个标准的HTTP请求。 –