public override void OnAuthorize(IDictionary <string, StringValues> headers) { if (headers.ContainsKey("socket-guid")) { var socketGuid = headers["socket-guid"]; if (WebSocketWorkflowHandler.Observers.ContainsKey(socketGuid)) { WebSocketObserver = WebSocketWorkflowHandler.Observers[socketGuid]; } } base.OnAuthorize(headers); }
protected virtual void OnIncommingConnection(IAsyncResult ar) { var newSocket = Listener.EndAccept(ar); var clientId = Guid.NewGuid().ToString(); if(Handshake(newSocket)) { var webSocket = _socketFactory.GetSocket(clientId, newSocket, _bufferSize); webSocket.OnDisconnect = x => { if (ClientDisconnected != null) ClientDisconnected(x); }; ClientSockets.Add(webSocket); var observer = new WebSocketObserver() { ClientId = clientId, ClientDisconnect = x => { if (ClientDisconnected != null) ClientDisconnected(x); }, ClientError = (x, ex) => { "Client {0} \r\n\t {1}".ToError<ISocketServer>(x, ex); }, MessageReceived = MessageReceived }; _socketObservers[clientId] = webSocket.Subscribe(observer); } ListenForConnections(); }