我想把我的散景服务器应用程序集成到电子中。所以我所做的是使用python-shell
运行散景服务器,如下所示
mainWindow = new BrowserWindow({
width: 1000,
height: 700,
show: false,
})
var PythonShell = require('python-shell');
var options = {
mode: 'text',
pythonPath: 'python3',
pythonOptions: ['-m'],
scriptPath: '',
args: ['serve','bokeh_project/']
};
PythonShell.run('bokeh', options, function (err, results) {
if (err) throw err;
console.log('results: %j', results);
});
mainWindow.loadURL('http://localhost:5006');
mainWindow.once('did-finish-load', () => {
mainWindow.show()
})
这里的问题是窗口永远不会弹出,因为electron没有检测到服务器已加载。
1条答案
按热度按时间oipij1gg1#
来自散景开发人员(我还没有尝试过):
注意到
DocumentReady
是在2.2中添加的,但目前只用于散景服务器应用,例如:我们想为
CustomJS
添加,但由于隐式文档,这将是棘手的,可能需要显式文档操作(以使目标文档调用js_on_event)我也找到了一堆变通办法。
解决方法1
所以我不得不添加这个
setTimeout
作为变通办法。如果我不使用这个,页面将永远卡住。解决方法2
它检查散景端口是否仍然关闭。但元素可能未加载和完全加载
解决方法3
最后我找到了另一个解决方法来检查是否所有元素都被完全渲染了。答案在this question中:
解决方法4
有一个GH issue,当散景完全加载并呈现时,作者要求调用回调。用户foobarbecue建议使用MutationObserver验证是否呈现了散景页面,但我从未使用过它。