Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }