Exemplo n.º 1
0
        private void LaunchWAMPEvents(WebSocketClient c, WebSocketFrame frame)
        {
            if (frame.opcode == (byte)WebSocketOpcode.CLOSE)
            {
                return;
            }

            if (!frame.fin)
            {
                if (fragFrame == null)
                {
                    fragFrame = frame;
                }
                fragStream.Write(frame.payloadData, 0, (int)frame.payloadLength);
            }
            else if (fragFrame != null)
            {
                fragStream.Seek(0, SeekOrigin.Begin);

                byte[] buf = new byte[fragStream.Length];
                fragStream.Read(buf, 0, buf.Length);

                fragFrame.payloadData = buf;
                fragFrame.Parse(fragFrame.Encode());
            }

            JArray wampPacket = JArray.Parse(Encoding.UTF8.GetString(frame.payloadData));

            switch ((WAMPMessageType)((int)wampPacket [0]))
            {
            case WAMPMessageType.HELLO:
                this.OnWAMPHello(wampPacket);
                break;

            case WAMPMessageType.SUBSCRIBE:
                this.OnWAMPSubscribe(wampPacket);
                break;

            case WAMPMessageType.UNSUBSCRIBE:
                this.OnWAMPUnsubscribe(wampPacket);
                break;

            case WAMPMessageType.PUBLISH:
                this.OnWAMPPublish(wampPacket);
                break;

            case WAMPMessageType.CALL:
                this.OnWAMPCall(wampPacket);
                break;

            case WAMPMessageType.WELCOME:
                Console.WriteLine("WAMP Server: Aborting Connection (Unexpected Message Type)");
                JArray array = new JArray();
                array.Add(WAMPMessageType.ABORT);
                JObject reasons = new JObject();
                reasons.Add("message", "WAMP Server: Aborting Connection (Unexpected Message Type)");
                array.Add(reasons);
                array.Add("wamp.error.UNEXPECTED_MESSAGE");
                this.Send(array.ToString());
                break;
            }
        }