Example #1
0
 public void append(WebSocketFrame frame)
 {
 }
Example #2
0
        private void dispatch()
        {
            WebSocketFrame frame        = new WebSocketFrame();
            WebSocketFrame partialFrame = null;

            byte[] buffer = new byte[128 * 1024];

            while (Interlocked.Read(ref state) != CLOSED)
            {
                int readBytes = read(buffer);

                MemoryStream s = new MemoryStream(buffer, 0, readBytes);
                while (frame.parse(s, readBytes))
                {
                    switch (frame.getOpCode())
                    {
                    case WebSocketFrameConstants.CONTINUATION:
                        if (partialFrame == null)
                        {
                            throw new WebSocketException("unexpected continuation frame");
                        }
                        break;

                    case WebSocketFrameConstants.TEXT:
                        if (partialFrame != null)
                        {
                            throw new WebSocketException("expected continuation frame");
                        }
                        if (frame.isFin())
                        {
                            notifyMessage(frame);
                        }
                        else
                        {
                            partialFrame = frame.copy();
                        }
                        break;

                    case WebSocketFrameConstants.BINARY:
                        if (partialFrame != null)
                        {
                            throw new WebSocketException("expected continuation frame");
                        }
                        if (frame.isFin())
                        {
                            notifyMessage(frame);
                        }
                        else
                        {
                            partialFrame = frame.copy();
                        }
                        break;

                    case WebSocketFrameConstants.CLOSE:
                        notifyClose(frame.getCloseCode(), frame.getCloseReason());
                        break;

                    case WebSocketFrameConstants.PING:
                        write(WebSocketFrame.pong(frame.getPayload(), 0, frame.getPayloadLength()));
                        break;

                    case WebSocketFrameConstants.PONG:
                        notifyPong(frame);
                        break;
                    }
                }
            }
        }