private void CloseConnection(object sender, ConnectionCloseEventArgs e) { e.Connection.Received -= ReceivedData; formatters[e.Connection.Id].DeserializedMessage -= DeserializedMessage; formatters.Remove(e.Connection.Id); sessionManager.RemoveSession(e.Connection.Id); }
private void FrameBuilder_OnClose(object sender, ConnectionCloseEventArgs e) { _socketHandler.OnDisconnect(new ConnectionEventArgs(ConnectionId, 0, "Disconnected by request")); if (BuilderConnectionClose != null) { BuilderConnectionClose(sender, e); } }
private void FrameBuilder_OnClose(object sender, ConnectionCloseEventArgs e) { _socketHandler.OnDisconnect(new ConnectionEventArgs(ConnectionId, (int)e.Code, e.Reason)); if (BuilderConnectionClose != null) { BuilderConnectionClose(sender, e); } }
private void ControlMessage(byte[] data) { if (_opCode == 0x08) { ConnectionCloseEventArgs closeEventArgs; if (data.Length == 0) { closeEventArgs = new ConnectionCloseEventArgs(WebSocketCloseCode.Normal, "Close frame received - zero bytes received"); } else if (data.Length == 1) { closeEventArgs = new ConnectionCloseEventArgs(WebSocketCloseCode.ProtocolError, "Invalid payload load"); } else { var code = BitConverter.ToUInt16(data, 0); if (!IsValidErrorCode(code)) { closeEventArgs = new ConnectionCloseEventArgs(WebSocketCloseCode.ProtocolError, string.Format("invalid status code {0}", code)); } else { closeEventArgs = new ConnectionCloseEventArgs((WebSocketCloseCode)code, "Close frame received"); } } _logger.ErrorFormat("Received close code from connection {0} - {1}", ConnectionId, closeEventArgs.Reason); if (OnClose != null) { OnClose(this, closeEventArgs); } return; } if (_opCode == 0x09) { if (OnPing != null) { OnPing(this, new PingEventArgs(data)); } else if (OnPong != null) { OnPong(this, new PingEventArgs(data)); } } lock (_syncFrameBuilderState) { _frameBuilderState = FrmeBuilderState.GET_INFO; } }
private void session_ConnectionClose(object sender, ConnectionCloseEventArgs e) { if (e.LastException != null) { logger.Debug("{0} session been close: {1}", _connectionToken.Substring(0, 6), e.LastException.Message); } //close the last processor if (_lastProcessor != null) { _lastProcessor.Close(); } SessionClose(this, EventArgs.Empty); }
protected virtual void OnConnectionClose(byte[] payload) { ConnectionCloseEventArgs args = GetConnectionCloseEventArgsFromPayload(payload); if (args.Reason == null) { _logger.Information(this.GetType(), "Received web socket close message: {0}", args.Code); } else { _logger.Information(this.GetType(), "Received web socket close message: Code '{0}' Reason '{1}'", args.Code, args.Reason); } if (ConnectionClose != null) { ConnectionClose(this, args); } }
private void C_ConnectionCloseEvent(object sender, ConnectionCloseEventArgs e) { _clientConnectionCloseEventArgs = e; }
private void S_ConnectionCloseEvent(object sender, ConnectionCloseEventArgs e) { _serverConnectionCloseEventArgs = e; }
public void WebSocketServer_CloseConnection_OnStopServerTest() { var clientsCount = 1; var ipep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4445); var epList = new List <TcpServerLocalEndpoint> { new TcpServerLocalEndpoint(ipep, clientsCount) }; var s = new WebSocketServer(); s.ConnectedEvent += S_ConnectedEvent; s.DisconnectedEvent += S_DisconnectedEvent; s.ConnectionCloseEvent += S_ConnectionCloseEvent; s.Start(epList); var c = new TcpClient(); c.DataReceivedEvent += C_DataReceivedEvent; c.Start(ipep); var startTime = DateTime.Now; while (_connectionEventArgs == null) { var delta = DateTime.Now - startTime; if (delta.TotalSeconds > 10) { Assert.Fail(); } Thread.Sleep(1); } var r = new Random((int)DateTime.Now.Ticks); List <byte> key = new List <byte>(); for (int i = 0; i < 16; i++) { key.Add((byte)r.Next(32, 127)); } var keyStr = Convert.ToBase64String(key.ToArray()); var reqStr = $"GET /Test HTTP/1.1\r\n"; reqStr += "Upgrade: websocket\r\n"; reqStr += "Connection: Upgrade\r\n"; reqStr += $"Sec-WebSocket-Key: {keyStr}\r\n"; reqStr += $"Sec-WebSocket-Version: 13\r\n\r\n"; _handshakeTest = true; _handshakeReceived = false; c.SendData(Encoding.UTF8.GetBytes(reqStr)); startTime = DateTime.Now; while (_handshakeReceived == false) { var delta = DateTime.Now - startTime; if (delta.TotalSeconds > 10) { Assert.Fail(); } Thread.Sleep(1); } _handshakeTest = false; _clientFrameData.Clear(); s.Stop(); startTime = DateTime.Now; _connectionCloseEventArgs = null; while (_clientFrameData.Count < 4) { var delta = DateTime.Now - startTime; if (delta.TotalSeconds > 10) { Assert.Fail(); } Thread.Sleep(1); } Assert.AreEqual(4, _clientFrameData.Count); var fin = (_clientFrameData[0] & 0x80) >> 7; var opcode = (_clientFrameData[0] & 0x0F); Assert.AreEqual(0x01, fin); Assert.AreEqual(0x08, opcode); Assert.AreEqual(0x02, _clientFrameData[1]); Assert.AreEqual(0x03, _clientFrameData[2]); Assert.AreEqual(0xE8, _clientFrameData[3]); c.Dispose(); s.Dispose(); }
void conn_Disconnected(object sender, ConnectionCloseEventArgs e) { this.textBox_Log.AddString("网络断开:" + e.ToString()); }