obnizとの通信切断時の処理を記述する

obniz

通信切断時の処理を記述する

obnizデバイスとプログラムが切断してしまった場合の処理を解説します。

プログラム

ソースコード

HTML
<html>
  <head>
    <meta charset="utf-8" />
    <script src="https://unpkg.com/obniz@3.26.0/obniz.js"></script>
    <script>
      const obniz = new Obniz("1234-5678");
      obniz.onconnect = async function() {
        obniz.display.clear();
        obniz.display.print("Hello,World!");
      };
      obniz.onclose = async function() {
        alert("obnizとの通信が切断されました");
      };
    </script>
  </head>
  <body>
    <h1>hello world test</h1>
  </body>
</html>

プログラムの解説

プログラム1と共通の部分は省きます。

obnizデバイスとの切断時の処理
JavaScript
obniz.onclose = async function() {
  alert("obnizとの通信が切断されました");
};

obnizデバイスとの接続時の処理にobniz.onconnectを使用したように、デバイスとの切断時の処理にはObniz.onclose を使用します。ここでは Obniz.onconnectと同様、無名関数 function(){ … } を代入する型式です。切断を検知すると、function(){ … }内に記述された処理が実行されます。

ただし、Obniz.onclose では obnizデバイス側で処理すべき内容を記述することはできません(既に切断してしているのですから、プログラムからデバイスに何かをさせることができません)。この例のようにブラウザに切断された旨のメッセージを表示したり、Webページ上に配置された操作用のフォーム要素を無効化するなどの処理を記述します。

実行

プログラム1に、切断時の処理を追加しました。実行/接続完了時は、プログラム1と同じくobnizのLCDに『Hello,World!』と表示されます。

ここで、obnizの電源を切って(USBケーブルを抜いて)しばらくすると、『obnizとの通信が切断されました』と Alert が表示されます。

※切断を検知するまでに1分ほどかかる場合もあります

まとめ

  • デバイスとの通信が切断されたときの処理は Obniz.onclose に設定する

コメント

タイトルとURLをコピーしました