将一个Socket.iostream连接到节点replstream

我用socket.io创build了一个快速的应用程序。 现在我想要一个浏览器terminal与我在节点中创build的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中的前端input数据。

想法?

我只是尝试了你的代码,我想你可能需要在你的stream发行换行repl来识别它:

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