从服务器端C#长轮询

use*_*723 4 c# long-polling

我更像是一个php程序员,而不是c#,但请耐心等待.

我有一个应用程序连接到一个不时发送推送消息的API.它使用长轮询作为机制.我已经研究过使用signalR,但所有示例都显示服务器正在推送消息.我希望服务器通过longpolling接收消息.有谁知道如何做到这一点?

spe*_*der 6

是.只需启动对远程端点的请求并等待响应.处理完响应后,再次开始.就这么简单.

public async Task LongPoll(Uri remoteEndPoint)
{
    for(;;)
    {
        string data;
        using(var wc=new WebClient())
        {
            data = await wc.DownloadStringTaskAsync(remoteEndPoint);
        }
        Process(data);  
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里忽略了取消,但如果你想要优雅地终止你的应用,你需要考虑如何结束轮询.

  • 您还必须小心您的托管环境,如果没有请求进入一段时间,IIS可能会关闭您的程序. (2认同)