28 lines
		
	
	
		
			879 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			28 lines
		
	
	
		
			879 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 'use strict'; | ||
|  | 
 | ||
|  | var net = require('net'); | ||
|  | var server = net.createServer(function (conn) { | ||
|  |   function echo(chunk) { | ||
|  |     conn.write(chunk); | ||
|  |     if (chunk.length <= 10 && /\b(q|quit|end|cancel)\b/i.test(chunk.toString('utf8'))) { | ||
|  |       conn.end(); | ||
|  |       conn.removeListener('data', echo); | ||
|  |     } | ||
|  |   } | ||
|  |   conn.on('data', echo); | ||
|  |   // NOTE: early versions of telebit do not support a 'connection' event
 | ||
|  |   // and therefore will say hello after the first message from the client
 | ||
|  |   conn.write( | ||
|  |     "[Echo Server] Hello! I'm an echo server.\n" | ||
|  |   + "[Echo Server] I try to be your friend but when I see things like q|quit|end|cancel, I give up.\n" | ||
|  |   ); | ||
|  | }); | ||
|  | server.on('error', function (err) { | ||
|  |   console.error("[echo server]"); | ||
|  |   console.error(err); | ||
|  | }); | ||
|  | server.listen(process.argv[2] || 3000, function () { | ||
|  |   console.info("Listening on", this.address()); | ||
|  |   console.info('ctrl+c to cancel'); | ||
|  | }); |