示例#1
0
 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;
 }