/// <summary> /// Al recibir un mensaje desde el servidor TCP /// </summary> /// <param name="sender">Emisor</param> /// <param name="e">Mensaje</param> private void TcpServer_OnMessage(object sender, string e) { MeshMessage meshMessage = Json.Parse <MeshMessage>(e); if (meshMessage != null) { if (meshMessage.Mac == this.MacAddress) { JObject jObj = JObject.Parse(e); if (jObj.ContainsKey("data")) { JToken data = jObj["data"]; if (data.HasValues && !(data.First.Path == "connection_event")) { JToken firstDataProp = data.First; // Bajar al siguiente nivel de propiedades en caso que // existan if (firstDataProp.HasValues) { firstDataProp = firstDataProp.First; } string msg = firstDataProp.ToString(); Debug.WriteLine(this, "Procesando mensaje: " + msg, VerbosityLevel.Debug); OnMessage?.Invoke(this, msg); } } } } }
/// <summary> /// Escribir un objeto a la red mesh /// </summary> /// <param name="mac">Dirección MAC a la cual escribir</param> /// <param name="obj">Objeto a escribir</param> /// <param name="layer">Capa de la red mesh</param> public void Write <T>(string mac, T obj, int layer = 1) { if (m_connectedRootNode == null) { return; } var msg = new MeshMessage <T>(mac, obj, layer); string serialized = JsonConvert.SerializeObject(msg, SerializationSettings); Debug.WriteLine(this, "Escribiendo mensaje TCP: " + serialized, VerbosityLevel.Debug); m_tcpServer.Send(m_connectedRootNode, Encoding.ASCII.GetBytes(serialized), supressHeader: true); }