コード例 #1
0
ファイル: HttpListenerHost.cs プロジェクト: sxryt/jellyfin
        private void OnWebSocketConnected(WebSocketConnectEventArgs e)
        {
            if (_disposed)
            {
                return;
            }

            var connection = new WebSocketConnection(e.WebSocket, e.Endpoint, _jsonSerializer, _logger, _textEncoding)
            {
                OnReceive   = ProcessWebSocketMessageReceived,
                Url         = e.Url,
                QueryString = e.QueryString ?? new QueryParamCollection()
            };

            connection.Closed += Connection_Closed;

            lock (_webSocketConnections)
            {
                _webSocketConnections.Add(connection);
            }

            if (WebSocketConnected != null)
            {
                WebSocketConnected?.Invoke(this, new GenericEventArgs <IWebSocketConnection>(connection));
            }
        }
コード例 #2
0
ファイル: ClientSession.cs プロジェクト: wuzhenda/HA4IoT
        private void UpgradeToWebSocketSession(UpgradedToWebSocketSessionEventArgs eventArgs)
        {
            _httpClientSession = null;

            _webSocketClientSession         = new WebSocketClientSession(_clientSocket, _log);
            _webSocketClientSession.Closed += OnWebSocketClientSessionClosed;

            var webSocketConnectedEventArgs = new WebSocketConnectedEventArgs(eventArgs.HttpRequest, _webSocketClientSession);

            try
            {
                WebSocketConnected?.Invoke(this, webSocketConnectedEventArgs);
            }
            finally
            {
                if (!webSocketConnectedEventArgs.IsHandled)
                {
                    _cancellationTokenSource.Cancel();
                }
            }
        }
コード例 #3
0
        private void OnWebSocketConnected(WebSocketConnectEventArgs e)
        {
            if (_disposed)
            {
                return;
            }

            var connection = new WebSocketConnection(e.WebSocket, e.Endpoint, _jsonSerializer, _logger)
            {
                OnReceive   = ProcessWebSocketMessageReceived,
                Url         = e.Url,
                QueryString = e.QueryString
            };

            connection.Closed += OnConnectionClosed;

            lock (_webSocketConnections)
            {
                _webSocketConnections.Add(connection);
            }

            WebSocketConnected?.Invoke(this, new GenericEventArgs <IWebSocketConnection>(connection));
        }
コード例 #4
0
ファイル: HttpListenerHost.cs プロジェクト: rigtorp/jellyfin
        private async Task WebSocketRequestHandler(HttpContext context)
        {
            if (_disposed)
            {
                return;
            }

            try
            {
                _logger.LogInformation("WS {IP} request", context.Connection.RemoteIpAddress);

                WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync().ConfigureAwait(false);

                var connection = new WebSocketConnection(
                    _loggerFactory.CreateLogger <WebSocketConnection>(),
                    webSocket,
                    context.Connection.RemoteIpAddress,
                    context.Request.Query)
                {
                    OnReceive = ProcessWebSocketMessageReceived
                };

                WebSocketConnected?.Invoke(this, new GenericEventArgs <IWebSocketConnection>(connection));

                await connection.ProcessAsync().ConfigureAwait(false);

                _logger.LogInformation("WS {IP} closed", context.Connection.RemoteIpAddress);
            }
            catch (Exception ex) // Otherwise ASP.Net will ignore the exception
            {
                _logger.LogError(ex, "WS {IP} WebSocketRequestHandler error", context.Connection.RemoteIpAddress);
                if (!context.Response.HasStarted)
                {
                    context.Response.StatusCode = 500;
                }
            }
        }
コード例 #5
0
ファイル: HttpServer.cs プロジェクト: v1ku/HA4IoT
 private void HandleWebSocketConnected(object sender, WebSocketConnectedEventArgs eventArgs)
 {
     WebSocketConnected?.Invoke(this, eventArgs);
 }