0

私は現在、IOT Coap プロトコルに取り組んでいます。銅の 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);
      }
   }
 }

しかし、私は問題に直面しています。ストリーミング中は、リソースを 1 回だけ読み取ります。その後、すべての空の rdd をフェッチし、バッチを完了します。一方、リソースがその値を変更した場合、それは読み取られません。私は何か間違ったことをしていますか?または、カスタムレシーバーで処理できるリソースが変更されるたびに読み取る他の機能が存在しますか? または、ストリーミング中に継続的に値を取得する方法について何か考えはありますか?

どんな助けも大いに待っていて、感謝しています。ありがとう

4

2 に答える 2

3

データのストリーミングはアプリケーションの実装です。

  • 1] リソースをオブザーバーとしてサブスクライブできます。オブザーバー機能はアプリケーションに実装する必要があります。
  • 2] PUT 機能を使用して、一定間隔で連続してデータを送信できます。

クライアント (firefox copper) がサーバー(coap-server)libcoapの「時間」リソースを観察するOBSERVE の良い例が に示されています。時間は秒単位で変化するため、時間と日付の CON メッセージをクライアントに継続的に送信します。次に、クライアントは ACK メッセージを送信します。coap-server

また、TCP 機能と組み合わせた CoAP は、データのストリーミングに適しています。

于 2016-01-19T10:29:49.183 に答える