PLAYCANVASを学習中。
リモートサーバーのJSONデータを非同期で読み込むTutorialがありました。
JSONデータをロードする | Learn PlayCanvas
サンプルの検証
実行結果はremote URLのJSONをそのまま表示するというもの。非同期ということなので、これでNode-REDにつなげると、Node-REDからデータを送るのができそうです。
HIERARCHYには、CameraとDirectionalLightの2点しかありません。
なんで実行結果にはHTMLが表示されるのでしょう?
こちらがASSETS。
<section>
<h1>JSON Data from an Asset</h1>
<p id="character-name"></p>
<div id="asset-json" class="json">
loading...
</div>
</section>
<section>
<h1>JSON Data from a remote URL</h1>
<div id="xhr-json" class="json">
loading...
</div>
</section>
displayというhtmlはこちら。
Game.jsというスクリプトでリモートのJSONデータを読み込んでいる様子。
game.jsの検証
this.loadJsonFromRemote("https://api.github.com/", function (data) {
// display JSON data from remote server
el = document.querySelector("#xhr-json");
el.textContent = JSON.stringify(data, null, 4);
});
game.jsは、initializeでhttps://api.github.com/からJSONデータを取得する関数があります。
これは、
Game.prototype.loadJsonFromRemote = function (url, callback) {
var xhr = new XMLHttpRequest();
xhr.addEventListener("load", function () {
callback(JSON.parse(this.response));
});
xhr.open("GET", url);
xhr.send();
};
このように、XMLHttpRequestを使って外部サイトの情報を取得するものです。
JSでAjaxで取得するのは、こちらのQiitaにかかれています。
Node-REDとの接続
これで、Node-REDでhttpのエンドポイントをつくってサーバーに公開すればつなげられそうなのですが、PlayCanvasはsslでないとつながらないので、SSL対応したサーバー構築が必要となります。
で、ここはちょっと時間かかりそうなので、今回はここまで。