コンテンツにスキップ

WebSocket

WebSocketとは

WebSocketはブラウザとサーバーが常時接続を維持する通信方式である。

REST API

要求
↓
応答
↓
切断

なのに対して、

WebSocketは

接続
↓
接続維持
↓
双方向通信

となる。


イメージ

ブラウザ
    ⇅
WebSocket
    ⇅
Node.js
    ⇅
ALEO

REST APIとの違い

項目 REST API WebSocket
通信方向 基本片方向 双方向
接続 毎回接続 常時接続
更新速度 普通 高速
実装難易度 低い やや高い

何ができる?

例えば現在温度が変化した場合、

REST API

ブラウザ
↓
温度教えて
↓
25℃

を何度も繰り返す必要がある。


WebSocket

温度変化
↓
Node.js
↓
自動送信
↓
ブラウザ

となる。


JavaScript例

接続

const ws = new WebSocket(
    "ws://localhost:3000"
);

受信

ws.onmessage = (event) => {
    console.log(event.data);
};

送信

ws.send("hello");

利用例

  • チャット
  • リアルタイム監視
  • オンラインゲーム
  • 株価表示
  • ロボット制御

Asterでの利用

特に有効なのは

  • モータ状態
  • バッテリ残量
  • センサ値
  • エラー通知

である。

例えばALEOの状態が変化した瞬間にACへ送信できる。

ALEO
 ↓
Node.js
 ↓
WebSocket
 ↓
AC

メリット

  • リアルタイム通信
  • 通信量削減
  • 双方向通信可能

デメリット

  • 実装が少し難しい
  • 接続管理が必要

Asterでの利用

Asterでは

  • 設定変更 → REST API
  • 状態監視 → WebSocket

という使い分けが最も実用的である。