将Socket.io流连接到Node REPL流

6
我用socket.io创建了一个express应用程序。现在我希望将浏览器终端与我在node中创建的repl连接起来。这是我想到的方法。
var io = io.listen(server);
var sessionSockets = new SessionSockets(io, sessionStore, cookieParser);

sessionSockets.on('connection', function (err, socket, session) {
  var stream = createStream(socket);
  var replInstance = repl.start({
    prompt: "> ",
    input: stream,
    output: stream
  });
  repls[socket.id] = replInstance;
});

var createStream = function(socket) {
  var stream = new Stream();
  stream.readable = true;
  stream.resume = function() {};

  stream.write = function(data) {
    socket.emit('stdout', data);
  };

  socket.on('stdin', function(data) {
    // emit data to repl stream - DOES NOT WORK
    stream.emit('data', data);
  });

  return stream;
};

它已经将控制台输出推送到socket.io连接并在前端显示,但它无法从前端输入数据到repl中。

有什么想法吗?

1个回答

0

我刚试了一下你的代码,我觉得你可能需要在流发出时加上一个换行符,这样repl才能识别它:

// emit data to repl stream - DOES NOT WORK
stream.emit('data', data+'\n');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接