6.30HttpLongPollingBuilder 构建器
创建于 2026 年 8 月 17 日约 1 分钟读完
HttpLongPollingBuilder 构建器是框架提供专门用来发送长轮询请求所需的各项设置。HttpLongPollingBuilder 的构造函数是私有的,因此无法直接使用 new 关键字进行实例化,不过,框架提供了 HttpRequestBuilder.LongPolling 的多个静态重载方法创建 HttpLongPollingBuilder 的实例。
HttpRequestBuilder.LongPolling(httpMethod, requestUri, onDataReceived, configure);HttpRequestBuilder.LongPolling(requestUri, onDataReceived, configure); // 默认 GET 请求HttpRequestBuilder.LongPolling(httpMethod, requestUri, configure);HttpRequestBuilder.LongPolling(requestUri, configure); // 默认 GET 请求此外,HttpLongPollingBuilder 包含以下配置功能:
// 默认为 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 实例后,您可以利用 Send、SendAsync 或 SendAsAsyncEnumerable 来执行发送操作。
httpRemoteService.Send(httpLongPollingBuilder, cancellationToken);await httpRemoteService.SendAsync(httpLongPollingBuilder, cancellationToken);await foreach (var response in httpRemoteService.SendAsAsyncEnumerable(httpLongPollingBuilder, cancellationToken)){ // 处理每个响应}