0

我目前正在研究 IOT Coap 协议。我通过铜火狐插件访问本地主机上的服务器。然后我在服务器中添加了具有“GET”功能的资源。之后,我将其客户端作为流媒体源。这是客户端流式传输的代码

 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 并完成它的批次。同时,如果资源改变了它的值,它就不会读取它。我做错了什么吗?或者是否有任何其他功能可以在我可以在我的自定义接收器中处理的资源发生更改时读取。?或者关于如何在流式传输期间持续获取价值的任何想法?

任何帮助都非常期待和赞赏。谢谢

4

2 回答 2

3

数据流是应用程序的实现。

  • 1] 您可以作为观察者订阅资源。观察者功能必须在您的应用程序中实现。
  • 2]您可以使用PUT功能连续发送数据。

中提供了一个很好的 OBSERVE 示例libcoap,其中客户端(firefox Copper)观察服务器(coap-server)的“时间”资源。coap-server不断向客户端发送时间和日期的 CON 消息,因为时间变化非常秒。反过来客户端发送ACK消息。

此外,与 TCP 功能相结合的 CoAP 更适合数据流。

于 2016-01-19T10:29:49.183 回答
1

有一个观察功能:它使 CoAP 客户端能够“订阅”资源,并且服务器可以在客户端订阅的资源在一段时间内发生更改时向订阅的客户端发送更新。这是IEFT 草案

于 2015-10-18T06:32:31.803 回答