0

我在 IBM Bluemix 上部署了一个非常简单的应用程序节点。此节点应用程序将以编程方式在同一台机器上启动节点 RED 实例,并在 /red 端点上提供节点 RED UI。

有一个端点 /startinstance 将启动节点 RED 实例

这是我正在使用的代码:

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 节点 RED UI 嵌入iFrame在主应用程序 UI 中。

这工作正常,我可以成功启动节点 RED 实例。当我第一次访问节点 RED UI 时,它工作正常。但是当我停止实例并重新启动它时,它会在 google chrome 控制台中引发 Web 套接字错误,如下所示:

与“ws://myapp.mybluemix.net/red/comms”的 WebSocket 连接失败:帧头 red.min.js:16 无效

这是 Safari 控制台中的错误:

WebSocket 连接到“ws://myapp.mybluemix.net/red/comms”失败:如果没有协商的 deflate-frame 扩展,压缩位必须为 0

此设置对于 localhost 运行良好,但我不确定为什么这会在 Bluemix 上引发错误。

4

0 回答 0