IBM Bluemix にデプロイされた非常に単純なアプリケーション ノードがあります。このノード アプリは、同じマシンでノード RED インスタンスをプログラムで開始し、/red エンドポイントでノード RED UI を提供します。
ノード RED インスタンスを開始するエンドポイント /startinstance があります。
これは私が使用しているコードです:
var RED = require('node-red');
var express = require('express'),
app = express(),
server = require('http').createServer(app);
var port = env.PORT:
var settings = {
httpAdminRoot: '/red',
httpNodeRoot: '/api',
userDir: instance.userDirectory,
functionGlobalContext: { }
};
app.get('/startinstance', function(req, res, next) {
RED.init(server, settings);
// Serve the editor UI from /red
app.use(settings.httpAdminRoot,RED.httpAdmin);
// Serve the http nodes UI from /api
app.use(settings.httpNodeRoot, RED.httpNode);
RED.start();
});
app.get('/stopinstance', function(req, res, next) {
RED.stop();
});
server.listen(port);
I node RED UI はiFrame
、メイン アプリケーション UI に埋め込まれています。
これは正常に機能し、ノード RED インスタンスを正常に開始できます。ノード RED UI に初めてアクセスすると、正常に動作します。しかし、インスタンスを停止して再起動すると、以下に示すように、Google Chrome コンソールで Web ソケット エラーがスローされます。
「ws://myapp.mybluemix.net/red/comms」への WebSocket 接続に失敗しました: 無効なフレーム ヘッダー red.min.js:16
そして、これはSafariコンソールのエラーです:
'ws://myapp.mybluemix.net/red/comms' への WebSocket 接続に失敗しました: ネゴシエートされた deflate-frame 拡張がない場合、圧縮ビットは 0 でなければなりません
このセットアップは localhost では正常に機能していますが、これが Bluemix でエラーをスローする理由がわかりません。