private void SendIntern(MessageV04 msg) { if (_ws != null && _ws.ReadyState == WebSocketState.Open) { _ws.Send(msg.ToString()); } }
public static MessageV04 Parse(string msg) { if (msg == null || msg.Length < 2) { return(Null); } MessageV04 m = Null; Cmd cmd = (Cmd)msg[0]; long mid = 0; int pos = 1; if (msg[pos] != ' ') { if (msg.Length < 5) { #if DEBUG Log.Warning("MessageV04({0}) - MId is too short", msg); #endif return(Null); } int j; for (; pos < 5; pos++) { j = AB.IndexOf(msg[pos]); if (j < 0) { #if DEBUG Log.Warning("MessageV04({0}) - bad char in MId", msg); #endif return(Null); } mid = (mid * 64) + j; } } else { pos++; } string[] payload; if (msg.Length > pos) { payload = msg.Substring(pos).Split('\x1E'); } else { payload = null; } m = new MessageV04(cmd, mid, payload); return(m); }
private void _ws_OnMessage(object sender, MessageEventArgs e) { MessageV04 msg; if (e.Type == Opcode.Text) { msg = MessageV04.Parse(e.Data); } else { return; } switch (msg.cmd) { case MessageV04.Cmd.Info: SendIntern(new MessageV04(MessageV04.Cmd.Connect, GenMsgId(), "user", "pass")); break; } }
static MessageV04() { Null = new MessageV04(Cmd.Empty, 0, null); }