public void sendPositionUpdate(PosData posdata) { string msg = "{ \"Id\":\"" + posdata.Id + "\",\"X\":" + String.Format("{0:0.####}", posdata.X) + ",\"Y\":" + String.Format("{0:0.####}", posdata.Y) + ",\"Elv\":" + String.Format("{0:0.####}", posdata.Elv) + ",\"Qx\":" + posdata.Quat_x + ",\"Qy\":" + posdata.Quat_y + ",\"Qz\":" + posdata.Quat_z + ",\"Qw\":" + posdata.Quat_w + ",\"Message\":\"" + posdata.Message + "\",\"MessageCounter\":" + posdata.Msgcount + ",\"Quality\":" + posdata.Quality + "}"; foreach (var socket in allSockets.ToList()) { try { socket.Send(msg); //broadcasting } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadLine(); } } Console.WriteLine(DateTime.Now + " [WebSocketServer] sent message broadcast: \n" + msg + "\n\n"); //Console.ReadLine(); }
private void parseMessage(string message) { string[] parts = { }; message = message.ToLower(); PosData posdata = new PosData(); parts = message.Split(new String[] { "[" }, StringSplitOptions.RemoveEmptyEntries); string[] d = { }; foreach (string p in parts) { string[] b = p.Split(new String[] { "\n" }, StringSplitOptions.RemoveEmptyEntries); switch (b[0]) { case "message]": //message part found for (int i = 1; i < b.Length; i++) { string[] c = b[i].Split(new Char[] { '=' }, StringSplitOptions.RemoveEmptyEntries); switch (c[0]) { case "sender": posdata.Id = c[1]; break; case "timestamp": posdata.Timestamp = float.Parse(c[1]); break; case "msgcounter": posdata.Msgcount = int.Parse(c[1]); break; case "version": posdata.Version = float.Parse(c[1]); break; case "message": if (c.Length > 1) { posdata.Message = c[1]; } else { posdata.Message = ""; } break; default: break; } } break; case "location]": //message location found for (int i = 1; i < b.Length; i++) { string[] c = b[i].Split(new Char[] { '=' }, StringSplitOptions.RemoveEmptyEntries); switch (c[0]) { case "pos": d = c[1].Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); posdata.X = float.Parse(d[0]); posdata.Y = float.Parse(d[1]); posdata.Elv = float.Parse(d[2]); break; case "ori": d = c[1].Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); posdata.Quat_x = float.Parse(d[0]); posdata.Quat_y = float.Parse(d[1]); posdata.Quat_z = float.Parse(d[2]); posdata.Quat_w = float.Parse(d[3]); break; case "quality": posdata.Quality = float.Parse(c[1]); break; default: break; } } break; } } this.wsserver.sendPositionUpdate(posdata); }