/// <summary> /// Notify listeners of the new temperature /// </summary> /// <param name="temp">The temperature</param> static private void NotifyListeners(int temp) { ArrayList resObservers = coapServer.ObserversList.GetResourceObservers(OBSERVED_RESOURCE_URI); if (resObservers == null || resObservers.Count == 0) { return; } //The next observe sequence number UInt16 obsSeq = (UInt16)Convert.ToInt16(DateTime.Today.ToString("mmss"));//Will get accomodated in 24-bits limit and will give good sequence foreach (CoAPRequest obsReq in resObservers) { UInt16 mId = coapServer.GetNextMessageID(); CoAPRequest notifyReq = new CoAPRequest(CoAPMessageType.CON, CoAPMessageCode.PUT, mId); notifyReq.RemoteSender = obsReq.RemoteSender; notifyReq.Token = obsReq.Token; //Add observe option with sequence number notifyReq.AddOption(CoAPHeaderOption.OBSERVE, AbstractByteUtils.GetBytes(obsSeq)); //The payload will be JSON Hashtable ht = new Hashtable(); ht.Add("temp", temp); string jsonStr = JSONResult.ToJSON(ht); notifyReq.AddPayload(jsonStr); //Tell recipient about the content-type of the response notifyReq.AddOption(CoAPHeaderOption.CONTENT_FORMAT, AbstractByteUtils.GetBytes(CoAPContentFormatOption.APPLICATION_JSON)); //send it coapServer.Send(notifyReq); } }