WebSocket¶
WebSocketとは¶
WebSocketはブラウザとサーバーが常時接続を維持する通信方式である。
要求
↓
応答
↓
切断
なのに対して、
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
という使い分けが最も実用的である。