C# 实现 AI SSE (Server-Sent Events)接口方式输出(对接AI模型API)

以下是一个使用 C# 实现接收 SSE(Server-Sent Events)接口数据、进行数据修改解析,然后再以 SSE 方式输出给前端的示例代码。

cs 复制代码
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

// 模拟一个控制器,在实际应用中可以根据具体需求调整
[ApiController]
[Route("[controller]")]
public class SseController : ControllerBase
{
    [HttpGet]
    public async Task Get()
    {
        // 设置响应头以支持 SSE
        Response.Headers.Add("Content-Type", "text/event-stream");
        Response.Headers.Add("Cache-Control", "no-cache");
        Response.Headers.Add("Connection", "keep-alive");

        // 模拟一个 SSE 数据源
        var sseSourceUrl = "https://example.com/sse-source";
        var request = (HttpWebRequest)WebRequest.Create(sseSourceUrl);

        using (var response = (HttpWebResponse)await request.GetResponseAsync())
        using (var stream = response.GetResponseStream())
        using (var reader = new StreamReader(stream))
        {
            string line;
            while ((line = await reader.ReadLineAsync()) != null)
            {
                // 这里可以对数据进行修改解析
                var modifiedData = ModifyData(line);

                // 以 SSE 格式发送数据到前端
                var sseData = $"data: {modifiedData}\n\n";
                var buffer = Encoding.UTF8.GetBytes(sseData);
                await Response.Body.WriteAsync(buffer, 0, buffer.Length);
                await Response.Body.FlushAsync();
            }
        }
    }

    // 模拟数据修改解析的方法
    private string ModifyData(string input)
    {
        // 这里可以添加具体的数据修改逻辑
        return $"Modified: {input}";
    }
}    

代码说明

  1. 设置响应头 :在 Get 方法中,设置了必要的响应头,以确保响应是 SSE 格式。
  2. 模拟 SSE 数据源 :使用 HttpWebRequest 从模拟的 SSE 数据源获取数据。
  3. 数据修改解析 :在 ModifyData 方法中,可以添加具体的数据修改逻辑。这里只是简单地在原始数据前添加了 Modified:
  4. 以 SSE 格式发送数据:将修改后的数据以 SSE 格式发送到前端。

注意事项

  • 请将 sseSourceUrl 替换为实际的 SSE 数据源 URL。
  • 此示例是一个简单的控制台应用程序,在实际应用中,你可能需要将其集成到 ASP.NET Core 项目中。
相关推荐
ai小陈6 小时前
Python 3.12与CUDA 12.8镜像实战:启动GPU实例后的五项自检
开发语言·人工智能·python·深度学习·ai·gpu算力
宝桥南山6 小时前
DeepSeek - 尝试安装和使用一下DeepSeek Harness
人工智能·ai·aigc·ai编程
小海豚儿6 小时前
不是所有 Workflow,都值得升级成 Graph
人工智能·ai编程
AZaLEan__6 小时前
ts接口梳理
开发语言
蓝桉柒76 小时前
java判断语句
java·开发语言
yswenli6 小时前
基于C#开发网站视频嗅探下载工具——BrowserVideoGrabber
c#·videodownload·webvideodownload·videograbber
Lost of 程序猿6 小时前
M2 实战:询价与采购订单聚合落地——跨聚合一致性、领域事件与 Outbox
开发语言·c#·asp.net·.net
速易达网络6 小时前
用 Three.js 打造一座会呼吸的海岛:海风之屿飞艇巡航的技术实现
开发语言·javascript·ecmascript
yujunl6 小时前
U9 BE插件的调试
开发语言
牛油果子哥q6 小时前
多模态大模型工程入门:图文Embedding、图文RAG、图片解析、C++多模态接口封装实战
开发语言·c++·embedding