概要
Nodejs の ws を使って MODE の WebSocket 機能を使ってみました
Nodejs の WebSocket ライブラリを他にも Socket.io や Websocket がありますが、今回は ws を使ってみました
理由は MODE が提供している Nodejs の SDK でも使っているからです
環境
- CentOS 6.7 Final
- Nodejs 4.2.5
- Npm 2.14.12
- ws 1.1.0
ws のインストール
npm コマンドを使って一発です
- npm install ws
でカレントの npm_moduls 配下にインストールされます
WebSocket クライアント
今回はサーバ側は MODE を使うので、MODE に対して接続する WebSocket クライアントを実装します
- vim sample_ws_client.js
var WebSocket = require('ws');
var deviceId = '000';
var endpoint = 'wss://api.tinkermode.com:443/devices/' + deviceId + '/command';
var deviceKey = 'v1.xxxxxxxxxx==.xxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var ws = new WebSocket(endpoint, {
headers: {
"Authorization": 'ModeCloud ' + deviceKey
}
});
ws.on('open', function() {
var json = {};
json.action = 'test';
json.parameters = {'p':1};
console.log(JSON.stringify(json));
});
ws.on('message', function incoming(message) {
console.log('received: %s', message);
});
deviceId と deviceKey は認証に必要なので MODE のデバイス一覧から取得してください
- node sample_ws_client.js
で実行します
MODE が提供する Lumos というアプリがあればそこからコマンドを送信すると以下のように送信されたコマンドを受信することができます
$ node sample_ws.js
received: {“action”:”change”,”parameters”:{“switch”:0}}
received: {“action”:”change”,”parameters”:{“switch”:1}}
最後に
ws を使って Nodejs から MODE に Websocket を張ってみました
SDK を使えばこの辺は何も意識せずにやってくれるのですが個人的に裏側がどういう仕組や実装で動作しているのかわからないと気持ち悪いです
なので、今回は独自の WebSocket クライアントを実装してみました
一応これで WebSocket の接続に必要な情報はわかったので他の言語やプラットフォームでも応用して接続できると思います
0 件のコメント:
コメントを投稿