public async Task SNotiPushHandler(HttpContext context, WebSocket socket) { var did = context.Request.Query["did"]; _client.AddMessageHandler(did, (msg) => SNotiMessageDefaultHandler(msg, socket)); var recv = await WebSocketMessage.GetMessageAsync(socket); while (!recv.Item3.CloseStatus.HasValue) { (string message, _, WebSocketReceiveResult result) = recv; _logger.LogInformation($"Receive message: {message}"); if (message.ToLower() == "ping") { var pong = Encoding.UTF8.GetBytes("pong"); await socket.SendAsync(new System.ArraySegment <byte>(pong), WebSocketMessageType.Text, true, CancellationToken.None); } // 转手发送给机智云 else { _client.SendMessage(message); } recv = await WebSocketMessage.GetMessageAsync(socket); } await socket.CloseAsync(recv.Item3.CloseStatus.Value, recv.Item3.CloseStatusDescription, CancellationToken.None); _client.RemoveMessageHandler(did); }
public async Task SayHello(HttpContext context, WebSocket socket) { var recv = await WebSocketMessage.GetMessageAsync(socket); while (!recv.Item3.CloseStatus.HasValue) { (string message, _, WebSocketReceiveResult result) = recv; _logger.LogInformation($"Receive message: {message}"); var response = Encoding.UTF8.GetBytes($"Hello! {message}"); await socket.SendAsync(new System.ArraySegment <byte>(response), result.MessageType, result.EndOfMessage, CancellationToken.None); recv = await WebSocketMessage.GetMessageAsync(socket); } await socket.CloseAsync(recv.Item3.CloseStatus.Value, recv.Item3.CloseStatusDescription, CancellationToken.None); }