public static Task SendControlFrame(Synchronized <Stream> stream, ControlFrame frame) { return(SendFixedFrame(stream, frame.FrameType.ToControlFrameOpcode(), frame.Payload.Length, false, (buffer, appDataOffset) => { Buffer.BlockCopy(frame.Payload, 0, buffer, appDataOffset, frame.Payload.Length); })); }
private async Task HandleControlFrame(ControlFrame frame) { var eventargs = new ControlFrameEventArgs(frame); var controlFrameEvent = OnControlFrame; if (controlFrameEvent != null) { await Task.Factory.FromAsync(controlFrameEvent.BeginInvoke, controlFrameEvent.EndInvoke, this, eventargs, null); } if (!eventargs.SuppressAutoResponse && AutoPong && (frame.FrameType == ControlFrame.Type.Ping)) { await WebSocketProtocol.SendControlFrame(OutputStream, new ControlFrame { FrameType = ControlFrame.Type.Pong, Payload = frame.Payload }); } }
public ControlFrameEventArgs(ControlFrame frame) { ControlFrame = frame; SuppressAutoResponse = false; }