2012-12-04 2 views
5

나는 socket.io와 함께 express 앱을 만들었습니다. 이제 브라우저 터미널을 노드에서 만든 repl과 연결해야합니다. 여기에 무슨 일이 있었는지노드 repl 스트림에 Socket.io 스트림을 연결하십시오.

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의 프론트 엔드로부터 데이터를 입력하는 것이 아닙니다.

아이디어가 있으십니까?

답변

0

난 그냥 코드를 시도하고, 당신이 REPL은 그것을 인식하는 방출 스트림에 줄 바꿈을해야 할 수도 있습니다 생각 :

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