从 plotly 直播流情节中获得固定响应 URL

Having a fixed response URL from plotly live stream plot

我打算绘制我的直播数据。使用 plotly https://github.com/chintanp/node_serial_uC/blob/master/stream_hum.js works and I can get the data plotted and updating in real-time at a unique (and random) URL like https://plot.ly/~chintanp/107(这是一个示例响应 url,现在可能无法正常工作),但是我在对函数调用 plotly.plot(...) 的响应中得到的这个 url 更改为我服务器的每个新 运行 都有一个新值。

有没有办法可以将这个 URL 设置为一个固定值,这样它就不会在我每次重新启动我的节点服务器时改变?

您想做的是覆盖或扩展固定文件名的现有绘图。这样,每次调用 Plotly.plot 时,它都会写入数据库中的同一图,该图可在固定的 URL 处访问。使用当前版本 1 API(您正在使用的版本)实现此目的的方法是为每个 运行.

传递相同的 filename
var plotly = require('plotly')('username','apiKey');

var data = [{x:[], y:[], stream:{token:'yourStreamtoken', maxpoints:200}}];
var graphOptions = {fileopt : "overwrite", filename : "yourfilename"};

plotly.plot(data, graphOptions, function() {
    var stream = plotly.stream('yourStreamtoken', function (res) {
        console.log(res);
    });

    someReadableStream.pipe(stream);
});

每次启动服务器时 "yourfilename" 都应该相同。另请注意,fileopt 设置为 "overwrite"。这将清除流缓冲区中的任何现有数据。如果您将 fileopt 设置为 "extend",它会将您正在流式传输的新数据附加到之前 运行 中仍然保留的任何数据上。

我发现在开发过程中最好使用 "overwrite" 而在生产中使用 "extend" 通常是有意义的(这样你就可以从 tcp 断开连接中恢复)。