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; } }