@@ -601,15 +601,14 @@ private async Task MvcForwardSendData(WebSocket webSocket, HttpContext context,
601601 object invokeResult = await MvcDistributeAsync ( webSocketOption , context , webSocket , request , requestBody , logger , appLifetime ) ;
602602
603603 // 发送结果给客户端
604- // 使用统一的SendAsync方法,自动适配单机和集群模式
605- // Use unified SendAsync method, automatically adapts to single machine or cluster mode
606- var connectionId = context . Connection . Id ;
607-
608- // 序列化响应以获取大小(用于统计)
604+ //string serialJson = JsonSerializer.Serialize(invokeResult, webSocketOption.DefaultResponseJsonSerializerOptions);
605+ //await webSocket.SendAsync(new ArraySegment<byte>(Encoding.UTF8.GetBytes(serialJson)), result.MessageType, result.EndOfMessage, CancellationToken.None);
606+
607+ // 序列化响应以获取大小
609608 string serialJson = JsonSerializer . Serialize ( invokeResult , webSocketOption . DefaultResponseJsonSerializerOptions ) ;
610609 var responseBytes = Encoding . UTF8 . GetBytes ( serialJson ) ;
611-
612- await WebSocketManager . SendAsync ( connectionId , invokeResult , webSocketOption . DefaultResponseJsonSerializerOptions , Encoding . UTF8 ) . ConfigureAwait ( false ) ;
610+
611+ await invokeResult . SendLocalAsync ( webSocketOption . DefaultResponseJsonSerializerOptions , result . MessageType , timeout : ResponseSendTimeout , encoding : Encoding . UTF8 , sendBufferSize : SendTextBufferSize , socket : webSocket ) . ConfigureAwait ( false ) ;
613612
614613 // 记录消息发送指标
615614 var currentNodeId = Infrastructure . Cluster . GlobalClusterCenter . ClusterContext ? . NodeId ;
@@ -669,22 +668,10 @@ private async Task MvcForwardSendData(WebSocket webSocket, HttpContext context,
669668 object invokeResult = await MvcDistributeAsync ( webSocketOption , context , webSocket , request , requestBody , logger , appLifetime ) ;
670669
671670 // 发送结果给客户端
672- // 使用统一的SendAsync方法,自动适配单机和集群模式
673- // Use unified SendAsync method, automatically adapts to single machine or cluster mode
674- var connectionId = context . Connection . Id ;
675-
676- // 序列化响应以获取大小(用于统计)
677- string serialJson = JsonSerializer . Serialize ( invokeResult , webSocketOption . DefaultResponseJsonSerializerOptions ) ;
678- var responseBytes = Encoding . UTF8 . GetBytes ( serialJson ) ;
679-
680- await WebSocketManager . SendAsync ( connectionId , invokeResult , webSocketOption . DefaultResponseJsonSerializerOptions , Encoding . UTF8 ) . ConfigureAwait ( false ) ;
681-
682- // 记录消息发送指标
683- var currentNodeId = Infrastructure . Cluster . GlobalClusterCenter . ClusterContext ? . NodeId ;
684- _metricsCollector ? . RecordMessageSent ( responseBytes . Length , currentNodeId , context . Request . Path ) ;
671+ //string serialJson = JsonSerializer.Serialize(invokeResult, webSocketOption.DefaultResponseJsonSerializerOptions);
672+ //await webSocket.SendAsync(new ArraySegment<byte>(Encoding.UTF8.GetBytes(serialJson)), result.MessageType, result.EndOfMessage, CancellationToken.None);
685673
686- // 记录统计信息(如果统计记录器可用)
687- Infrastructure . Cluster . GlobalClusterCenter . StatisticsRecorder ? . RecordBytesSent ( context . Connection . Id , responseBytes . Length ) ;
674+ await invokeResult . SendLocalAsync ( webSocketOption . DefaultResponseJsonSerializerOptions , result . MessageType , timeout : ResponseSendTimeout , encoding : Encoding . UTF8 , sendBufferSize : SendTextBufferSize , socket : webSocket ) . ConfigureAwait ( false ) ;
688675 }
689676 catch ( JsonException ex )
690677 {
0 commit comments