6.34HttpServerSentEventsBuilder 构建器
创建于 2026 年 8 月 17 日约 1 分钟读完
HttpServerSentEventsBuilder 构建器是框架提供专门用来接收服务器 Server-Sent Events 推送事件所需的各项设置。HttpServerSentEventsBuilder 的构造函数是私有的,因此无法直接使用 new 关键字进行实例化,不过,框架提供了 HttpRequestBuilder.ServerSentEvents 的多个静态重载方法创建 HttpServerSentEventsBuilder 的实例。
HttpRequestBuilder.ServerSentEvents(requestUri, onMessage, configure); // 默认 GET 请求HttpRequestBuilder.ServerSentEvents(httpMethod, requestUri, onMessage, configure);HttpRequestBuilder.ServerSentEvents(requestUri, configure); // 默认 GET 请求HttpRequestBuilder.ServerSentEvents(httpMethod, requestUri, configure);此外,HttpServerSentEventsBuilder 包含以下配置功能:
// 默认为 GET 请求HttpRequestBuilder.ServerSentEvents("https://localhost:7044/HttpRemote/Events" , async (data, token) => { Console.WriteLine(data.Data); await Task.CompletedTask; }) // 设置默认重新连接的间隔时间,默认为 2 秒 .SetDefaultRetryInterval(2000) // 单位毫秒 // 设置最大重试次数,默认为 100 次 .SetMaxRetries(500) // 设置用于在与事件源的连接打开时的操作 .SetOnOpen(() => {}) // 设置用于在从事件源接收到数据时的操作 // .SetOnMessage(async (data, token) => {}) // 可通过初始时传入 // 设置用于在事件源连接未能打开时的操作 .SetOnError(exception => {}) // 设置 Server-Sent Events 事件处理程序 .SetEventHandler<CustomServerSentEventsEventHandler>() .SetEventHandler(typeof(CustomServerSentEventsEventHandler)) // 设置是否自动修正请求方法 // 若为 true 则当请求为 GET 或 HEAD 且包含请求内容时,自动将方法改为 POST;默认值为 true .SetAutoCorrectMethod(true) // 设置 HttpRequestBuilder 实例 .With(builder => {})); // 支持更多扩展在通过 HttpRequestBuilder.ServerSentEvents 方法成功构建 HttpServerSentEventsBuilder 实例后,您可以利用 Send、SendAsync 或 SendAsAsyncEnumerable 来执行发送操作。
httpRemoteService.Send(httpServerSentEventsBuilder, cancellationToken);await httpRemoteService.SendAsync(httpServerSentEventsBuilder, cancellationToken);await foreach (var data in httpRemoteService.SendAsAsyncEnumerable(httpServerSentEventsBuilder, cancellationToken)){ // 处理每个数据}