Websocket API

エンドポイント

デバイスのWebsocket版ハードウェアAPIはobnizIDを含む以下のエンドポイントとなります。

wss://obniz.io/obniz/{obniz_id}/ws/1

アクセストークン発行前であればobnizIdのみで接続が可能です。以下のプロパティがQueryStringにより設定可能です。

プロパティ(query) デフォルト値 説明
access_token なし デバイス管理でデバイスごとに発行したアクセストークン。または「デバイス制御」権限のあるAPIキーまたはWebAppトークンかOAuthトークン。

JSONについて

Websocket APIでは送信受信共に配列化されたobjectとなります。

接続手順

接続には以下の手順が必要です。

  1. 上記エンドポイントへの接続
  2. redirect指示があった場合、接続先エンドポイントを切り替える
  3. readyによりデバイス制御が可能な状態となる。

以下に接続とコマンド送受信の例を示します

<!-- HTML Example -->
<html>
<body>
<script>
  // Simplest example
  var host = 'wss://obniz.io'
 
  function connect() {
    var socket = new WebSocket(host + '/obniz/OBNIZ_ID_HERE/ws/1');
 
    socket.onmessage = function (event) {
      var arr = JSON.parse(event.data);
      for (var i=0; i<arr.length; i++) {
        var obj = arr[i];
        if (obj.ws && obj.ws.redirect) {
          host = obj.ws.redirect;
          socket.onmessage = null;
          socket.close();
          connect();
        }
        if (obj.ws && obj.ws.ready) {
          socket.send(JSON.stringify([{display:{clear:true}}, {display:{text:"Works fine."}}]));
        }
      }
    }
 
  }
 
  connect();
 
</script>
</body>
</html>