private void OnKeepAlive() { if (_keepAliveLocker.WaitOne(0)) { try { if (State != WebSocketState.Open) { return; } if (_keepAliveTracker.ShouldSendKeepAlive()) { var keepAliveFrame = new PingFrame().ToArray(_frameBuilder); SendFrame(keepAliveFrame); StartKeepAliveTimeoutTimer(); _keepAliveTracker.ResetTimer(); } } catch (Exception ex) { _log(ex.Message); Close(WebSocketCloseCode.EndpointUnavailable); } finally { _keepAliveLocker.Release(); } } }
private async void OnKeepAlive() { if (await _keepAliveLocker.WaitAsync(0)) { try { if (State != WebSocketState.Open) { return; } if (_keepAliveTracker.ShouldSendKeepAlive()) { var keepAliveFrame = new PingFrame(false).ToArray(_frameBuilder); await SendFrame(keepAliveFrame); StartKeepAliveTimeoutTimer(); #if DEBUG _log.DebugFormat("Session [{0}] sends server side ping frame [{1}].", this, string.Empty); #endif _keepAliveTracker.ResetTimer(); } } catch (Exception ex) { _log.Error(string.Format("Session [{0}] exception occurred, [{1}].", this, ex.Message), ex); await Close(WebSocketCloseCode.EndpointUnavailable); } finally { _keepAliveLocker.Release(); } } }
public byte[] EncodeFrame(PingFrame frame) { if (!string.IsNullOrEmpty(frame.Data)) { var data = Encoding.UTF8.GetBytes(frame.Data); if (data.Length > 125) throw new WebSocketException("All control frames must have a payload length of 125 bytes or less."); return Encode(frame.OpCode, data, 0, data.Length, isMasked: frame.IsMasked); } else { return Encode(frame.OpCode, EmptyArray, 0, 0, isMasked: frame.IsMasked); } }
public byte[] EncodeFrame(PingFrame frame) { if (!string.IsNullOrEmpty(frame.Data)) { var data = Encoding.UTF8.GetBytes(frame.Data); if (data.Length > 125) { throw new WebSocketException("All control frames must have a payload length of 125 bytes or less."); } return(Encode(frame.OpCode, data, 0, data.Length, isMasked: frame.IsMasked)); } else { return(Encode(frame.OpCode, EmptyArray, 0, 0, isMasked: frame.IsMasked)); } }
private async void OnKeepAlive() { if (await _keepAliveLocker.WaitAsync(0)) { try { if (State != WebSocketState.Open) return; if (_keepAliveTracker.ShouldSendKeepAlive()) { var keepAliveFrame = new PingFrame(false).ToArray(_frameBuilder); await SendFrame(keepAliveFrame); StartKeepAliveTimeoutTimer(); #if DEBUG _log.DebugFormat("Session [{0}] sends server side ping frame [{1}].", this, string.Empty); #endif _keepAliveTracker.ResetTimer(); } } catch (Exception ex) { _log.Error(string.Format("Session [{0}] exception occurred, [{1}].", this, ex.Message), ex); await Close(WebSocketCloseCode.EndpointUnavailable); } finally { _keepAliveLocker.Release(); } } }
private void OnKeepAlive() { if (_keepAliveLocker.WaitOne(0)) { try { if (State != WebSocketState.Open) return; if (_keepAliveTracker.ShouldSendKeepAlive()) { var keepAliveFrame = new PingFrame().ToArray(_frameBuilder); SendFrame(keepAliveFrame); StartKeepAliveTimeoutTimer(); _keepAliveTracker.ResetTimer(); } } catch (Exception ex) { _log(ex.Message); Close(WebSocketCloseCode.EndpointUnavailable); } finally { _keepAliveLocker.Release(); } } }