Skip to content

Instantly share code, notes, and snippets.

@TooTallNate
Created March 26, 2012 20:09
Show Gist options
  • Star 87 You must be signed in to star a gist
  • Fork 22 You must be signed in to fork a gist
  • Save TooTallNate/2209310 to your computer and use it in GitHub Desktop.
Save TooTallNate/2209310 to your computer and use it in GitHub Desktop.
Running a "full-featured" REPL using a net.Server and net.Socket
var net = require('net')
var sock = net.connect(1337)
process.stdin.pipe(sock)
sock.pipe(process.stdout)
sock.on('connect', function () {
process.stdin.resume();
process.stdin.setRawMode(true)
})
sock.on('close', function done () {
process.stdin.setRawMode(false)
process.stdin.pause()
sock.removeListener('close', done)
})
process.stdin.on('end', function () {
sock.destroy()
console.log()
})
process.stdin.on('data', function (b) {
if (b.length === 1 && b[0] === 4) {
process.stdin.emit('end')
}
})
var repl = require('repl')
var net = require('net')
net.createServer(function (socket) {
var r = repl.start({
prompt: 'socket '+socket.remoteAddress+':'+socket.remotePort+'> '
, input: socket
, output: socket
, terminal: true
, useGlobal: false
})
r.on('exit', function () {
socket.end()
})
r.context.socket = socket
}).listen(1337)
@qzaidi
Copy link

qzaidi commented Apr 21, 2013

Looks like this stopped working with 0.10.0, running the client results in the following error.

_stream_readable.js:683
throw new Error('Cannot switch to old mode now.');

@sandover
Copy link

I'm curious, too -- I'd like a remote REPL participant to be able to see the results of whatever they do, in their own REPL, instead of having that output "leak" back into the terminal where the program is running.

Copy link

ghost commented Dec 3, 2013

@JigneshPansuriaDeveloper

var socket = require('engine.io-client');
console.log(socket.remoteAddress);

i am not getting remote addeess and it gives undefined

@JigneshPansuriaDeveloper

req.headers['x-forwarded-for'] it gives local ip address ...

i want remote ip address

@KrishnaAnanthi
Copy link

how to start the client and server in this application?

@KrishnaAnanthi
Copy link

i tried node repl-server.js it is giving me an error
module.js:538
throw err;
^

Error: Cannot find module 'C:\D Drive\Learning\repl-server.js'
at Function.Module._resolveFilename (module.js:536:15)
at Function.Module._load (module.js:466:25)
at Function.Module.runMain (module.js:676:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment