2015-10-16 54 views
0

我目前正在研究IOT Coap協議。我通過銅線firefox插件在本地主機上訪問服務器。然後我添加資源在服務器中具有「GET」功能。 之後,我將它的客戶端作爲流媒體源。 下面是客戶端流作爲流源的COAP

class customReceiver(test:String) extends Receiver[String](StorageLevel.MEMORY_AND_DISK_2) with Logging with Serializable { 
    @volatile private var stopped = false 
    override def onStart() { 

     val client = new CoapClient("ip/resource") 
     var text = client.get().getResponseText(); 
     store(text) 
    } 
    override def onStop(): Unit = synchronized { 
     try 
     { 
     stopped = true 
     } 
     catch 
     { 
     case e: Exception => println("exception caught: " + e); 
     } 
    } 
} 

的代碼,但我面臨的一個問題。在流媒體期間,它只需讀取一次資源。之後,它將獲取所有空rdd並完成其批處理。同時,如果資源改變了它的值,它就不會讀取它。 我做錯了什麼?或者是否存在任何其他功能,只要資源發生變化,我就可以在自定義接收器中處理。或者關於如何在流媒體中連續獲取價值的任何想法?

任何幫助是等待和讚賞。 謝謝

回答

2

數據流是應用程序實現。

  • 1]您可以將資源訂閱爲觀察者。觀察者功能必須在您的應用程序中實施。
  • 2]您可以使用PUT功能間隔連續發送數據。

良好OBSERVE例子在libcoap,其中客戶端(火狐銅)觀察的服務器(COAP服務器)「時間」資源提供。 coap-server不斷向客戶端發送時間和日期的CON消息,因爲時間變化非常小。客戶端又發送ACK消息。

此外,CoAP與TCP功能相結合,更適合數據流式傳輸。

+0

是的。 @electrospark。我按照你所說的方式實現了它。謝謝。!! – Sadaf

1

有一個觀察功能:它使CoAP客戶端能夠「訂閱」資源和服務器,以向訂閱客戶端發送更新,而無論客戶端訂閱的資源在一段時間內是否被更改。這裏是IEFT draft