4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SkyWayAdvent Calendar 2018

Day 1

Node環境でSkyWayしようと思ったが秒で心が折れた話

Last updated at Posted at 2018-12-15

やっぱりブラウザで動作させるのがジャスティスなんですよね。

やりたかったこと

監視カメラみたいなものが作りたかった。

  • Raspberry Pi + USB Camera
  • RPiは撮影した映像を垂れ流すだけで、受信はしない
  • RPiにはGUI不要
  • 垂れ流した映像は、別のマシン上のブラウザで閲覧する想定

こんな感じのことを想定していました。とりあえず、映像送信側のコーディングをしようと思って、SkyWayのJavaScript SDKを使って、コードを書いてみました。

その際、どうせRPiはGUIがなくてもいいので、Node環境上で動作するかやってみました。

やったこと

テキトーにスクリプトを書いてみた。

const Peer = require('skyway-js');
const peer = new Peer({
    key: 'xxxxx',
    debug: 3
});

peer.on('open', function () {
    console.log('opened : ' + peer.id);
});

peer.on('error', function (err) {
    console.log('error : ' + err);
});

とりあえずPeerをNewするところまで。これを実行してみた。

$ node -v
v8.12.0
$ node script.js 
/Users/pokiiio/Desktop/skyway-test/node_modules/skyway-js/dist/skyway.js:14
})(window, function() {
   ^

ReferenceError: window is not defined
    at Object.<anonymous> (/Users/pokiiio/Desktop/skyway-test/node_modules/skyway-js/dist/skyway.js:14:4)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/pokiiio/Desktop/skyway-test/script.js:3:14)
    at Module._compile (module.js:653:30)

はいはい。ブラウザ環境がやっぱり必要そうですよね。

それならば、browser-envでブラウザ環境をエミュレートしてみてはどうだろうかと。

$ npm install browser-env --save

よしなにInstallしてみて、スクリプトの先頭で、require('browser-env')();を呼ぶ。

require('browser-env')();

const Peer = require('skyway-js');
const peer = new Peer({
    key: 'xxxxx',
    debug: 3
});

peer.on('open', function () {
    console.log('opened : ' + peer.id);
});

peer.on('error', function (err) {
    console.log('error : ' + err);
});

これでどうじゃ。

$ node script.js 
SkyWay:  { Error: The domain "null" is not registered to this API key. Please confirm your settings on the SkyWay dashboard https://skyway.io/ds
    at socket_Socket.socket.on.error (/Users/pokiiio/Desktop/skyway-test/node_modules/skyway-js/dist/skyway.js:17016:19)
    at socket_Socket../node_modules/events/events.js.EventEmitter.emit (/Users/pokiiio/Desktop/skyway-test/node_modules/skyway-js/dist/skyway.js:1139:17)
    at Socket._io.on.message (/Users/pokiiio/Desktop/skyway-test/node_modules/skyway-js/dist/skyway.js:13452:16)
    at Socket../node_modules/socket.io-client/node_modules/component-emitter/index.js.Emitter.emit (/Users/pokiiio/Desktop/skyway-test/node_modules/skyway-js/dist/skyway.js:7987:20)
    at Socket../node_modules/socket.io-client/lib/socket.js.Socket.onevent (/Users/pokiiio/Desktop/skyway-test/node_modules/skyway-js/dist/skyway.js:7205:10)
    at Socket../node_modules/socket.io-client/lib/socket.js.Socket.onpacket (/Users/pokiiio/Desktop/skyway-test/node_modules/skyway-js/dist/skyway.js:7163:12)
    at Manager.<anonymous> (/Users/pokiiio/Desktop/skyway-test/node_modules/skyway-js/dist/skyway.js:7840:15)
    at Manager../node_modules/socket.io-client/node_modules/component-emitter/index.js.Emitter.emit (/Users/pokiiio/Desktop/skyway-test/node_modules/skyway-js/dist/skyway.js:7987:20)
    at Manager../node_modules/socket.io-client/lib/manager.js.Manager.ondecoded (/Users/pokiiio/Desktop/skyway-test/node_modules/skyway-js/dist/skyway.js:6659:8)
    at Decoder.<anonymous> (/Users/pokiiio/Desktop/skyway-test/node_modules/skyway-js/dist/skyway.js:7840:15) type: 'invalid-domain' }
error : Error: The domain "null" is not registered to this API key. Please confirm your settings on the SkyWay dashboard https://skyway.io/ds

ほうほう、よくわからんけど、nullをDashboardのAvailable domainsに追加すればいいのね(錯乱)、と思いnullを追加。

Screen Shot 2018-12-15 at 17.57.21.png

そして再度実行。

$ node script.js 
SkyWay:  { Error: The domain "null" is not registered to this API key. Please confirm your settings on the SkyWay dashboard https://skyway.io/ds
(以下省略)

ダメですよね・・・。
WebRTCですから、Webブラウザじゃないとダメですよね・・・。

ちょっと出直してきます。

ダメだったけど

サンプルコードがたくさん準備されてるので、まずはそれを動かしつつ、コードを写経してみようと思います。

@n0bisukeさんに、npmモジュールも教えていただいたので、こちらも使ってみようと思います。
https://www.npmjs.com/package/skyway-gateway

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?