COAP 作为流媒体源

COAP as a Streaming Source

我目前正在 IOT Coap protocol.I 通过 copper firefox 插件访问本地主机上的服务器。然后我在服务器中添加了具有 "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 并完成它的批处理。同时,如果资源改变了它的价值,它不会读取它。 我做错了什么吗?或者是否存在我可以在我的自定义接收器中处理的资源更改时读取的任何其他功能?或者关于如何在流式传输期间持续获取价值的任何想法?

非常期待和感谢任何帮助。 谢谢

有一个观察功能:它使 CoAP 客户端能够“订阅”资源和服务器,以便在客户端订阅的资源在一段时间内发生变化时向订阅的客户端发送更新。这里是 IEFT draft.

数据流是应用程序实现。

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

libcoap 中提供了一个很好的 OBSERVE 示例,其中客户端(firefox copper)观察服务器 (coap-server)[=25= 的 "time" 资源]. coap-server 不断向客户端发送时间和日期的 CON 消息,因为时间变化非常秒。依次客户端发送ACK消息。

CoAP 与 TCP 功能相结合更适合数据流。