我正在制作一个具有IPython命令行界面的Web应用程序,我想添加自动完成功能。到目前为止,stdout/stdin 的读取和写入工作正常,我可以传输命令,但我无法实现自动完成功能。我尝试通过 stdin t
发送,但这不是要走的路。有没有办法做到这一点?
这是我的基本服务器逻辑:
var python = spawn('ipython', ['-i']);
s.on('run', function (input) {
python.stdin.write(input.command + 'n');
});
python.stdout.on('data', function (data) {
var output = '' + data;
s.emit('response', {
output: output
});
});
python.stderr.on('data', function (data) {
var output = '' + data;
s.emit('response', {
error: output
});
});
为什么这么讨厌大写的 I?它是IPython(不是由Apple构建的),但没关系。
话虽如此,为什么要使用重新发明轮子的艰难道路没有阅读有关同一主题的其他 SO 问题?
我想你的略有不同,因为你在服务器端有 js,所以你可以要求服务器端的ZMQ并遵守消息规范(以及来自编写IHaskell的人的关于消息传递协议的精彩博客文章)。有了它,它将比解析标准输出脆得多,具有更多功能(发送图像)。此外,您将免费获得其他语言,如果您与 websockets 建立桥梁,我想您可以重用kernel.js
.
愚蠢的问题,但你见过IPython笔记本吗?看起来你可以从中重用很多东西。