6.34HttpServerSentEventsBuilder 构建器

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

HttpServerSentEventsBuilder 构建器是框架提供专门用来接收服务器 Server-Sent Events 推送事件所需的各项设置。HttpServerSentEventsBuilder 的构造函数是私有的,因此无法直接使用 new 关键字进行实例化,不过,框架提供了 HttpRequestBuilder.ServerSentEvents 的多个静态重载方法创建 HttpServerSentEventsBuilder 的实例。

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

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

cs
// 默认为 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 实例后,您可以利用 SendSendAsyncSendAsAsyncEnumerable 来执行发送操作。

cs
httpRemoteService.Send(httpServerSentEventsBuilder, cancellationToken);await httpRemoteService.SendAsync(httpServerSentEventsBuilder, cancellationToken);await foreach (var data in httpRemoteService.SendAsAsyncEnumerable(httpServerSentEventsBuilder, cancellationToken)){    // 处理每个数据}