6.30HttpLongPollingBuilder 构建器

创建于 2026 年 8 月 17 日约 1 分钟读完

HttpLongPollingBuilder 构建器是框架提供专门用来发送长轮询请求所需的各项设置。HttpLongPollingBuilder 的构造函数是私有的,因此无法直接使用 new 关键字进行实例化,不过,框架提供了 HttpRequestBuilder.LongPolling 的多个静态重载方法创建 HttpLongPollingBuilder 的实例。

cs
HttpRequestBuilder.LongPolling(httpMethod, requestUri, onDataReceived, configure);HttpRequestBuilder.LongPolling(requestUri, onDataReceived, configure); // 默认 GET 请求HttpRequestBuilder.LongPolling(httpMethod, requestUri, configure);HttpRequestBuilder.LongPolling(requestUri, configure); // 默认 GET 请求

此外,HttpLongPollingBuilder 包含以下配置功能:

cs
// 默认为 GET 请求HttpRequestBuilder.LongPolling("https://localhost:7044/HttpRemote/LongPolling"    , async (responseMessage, token) =>    {        Console.WriteLine(await responseMessage.Content.ReadAsStringAsync(cancellationToken));        await Task.CompletedTask;    })    // 设置轮询重试间隔,默认为 2 秒    .SetRetryInterval(TimeSpan.FromSeconds(2))    // 设置最大重试次数,默认为 100 次    .SetMaxRetries(500)    // 设置在接收服务器返回 200~299 状态码的数据的操作    // .SetOnDataReceived(async responseMessage => {})  // 可通过初始时传入    // 设置在接收服务器返回【非】 200~299 状态码的数据的操作    .SetOnError(async responseMessage => {})    // 设置在响应标头包含 X-End-Of-Stream 时触发的操作    .SetOnEndOfStream(async ResponseMessage => {})    // 设置长轮询事件处理程序    .SetEventHandler<CustomLongPollingEventHandler>()    .SetEventHandler(typeof(CustomLongPollingEventHandler))    // 设置 HttpRequestBuilder 实例    .With(builder => {}));  // 支持更多扩展

在通过 HttpRequestBuilder.LongPolling 方法成功构建 HttpLongPollingBuilder 实例后,您可以利用 SendSendAsyncSendAsAsyncEnumerable 来执行发送操作。

cs
httpRemoteService.Send(httpLongPollingBuilder, cancellationToken);await httpRemoteService.SendAsync(httpLongPollingBuilder, cancellationToken);await foreach (var response in httpRemoteService.SendAsAsyncEnumerable(httpLongPollingBuilder, cancellationToken)){    // 处理每个响应}