using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System.Net.WebSockets; using System.Text; using System.Threading; using System; using System.Threading.Tasks; using System.Collections.Generic; namespace Shentun.Peis.Controllers { [Route("api/[controller]")] [ApiController] public class AiMessageWsController : ControllerBase { [HttpGet] public IAsyncEnumerable GetData() { return GenerateDataAsync(); } private async IAsyncEnumerable GenerateDataAsync() { for (int i = 0; i < 100; i++) { await Task.Delay(100); // 模拟延迟 yield return $"Data {i}"; } } //public async Task HandleWebSocket() //{ // if (HttpContext.WebSockets.IsWebSocketRequest) // { // using var webSocket = await HttpContext.WebSockets.AcceptWebSocketAsync(); // await ProcessDeepSeekStream(webSocket); // } // else // { // HttpContext.Response.StatusCode = StatusCodes.Status400BadRequest; // } //} //private async Task ProcessDeepSeekStream(WebSocket webSocket) //{ // // 调用deepseek API // var stream = await GetDeepSeekStream(); // foreach (var chunk in stream) // { // var buffer = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(chunk)); // await webSocket.SendAsync( // new ArraySegment(buffer), // WebSocketMessageType.Text, // true, // CancellationToken.None); // } // await webSocket.CloseAsync( // WebSocketCloseStatus.NormalClosure, // "Stream completed", // CancellationToken.None); //} } }