34 lines
		
	
	
		
			665 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
		
			665 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 'use strict'; | ||
|  | 
 | ||
|  | var net = require('net'); | ||
|  | var http = require('http'); | ||
|  | 
 | ||
|  | var http80 = http.createServer(function (req, res) { | ||
|  |   res.end('Hello, World!'); | ||
|  | }); | ||
|  | 
 | ||
|  | var tcp80 = net.createServer(function (socket) { | ||
|  | 
 | ||
|  |   socket.once('data', function (chunk) { | ||
|  | 
 | ||
|  |     if (/http\/1/i.test(chunk.toString())) { | ||
|  |       console.log("looks like http, continue"); | ||
|  |       http80.emit('connection', socket); | ||
|  |     } else { | ||
|  |       console.log("looks like tcp, die"); | ||
|  |       socket.end(); | ||
|  |     } | ||
|  | 
 | ||
|  |     socket.pause(); | ||
|  |     process.nextTick(function () { | ||
|  |       socket.emit('data', chunk); | ||
|  |       socket.resume(); | ||
|  |     }); | ||
|  |   }); | ||
|  | 
 | ||
|  | }); | ||
|  | 
 | ||
|  | tcp80.listen(80, function () { | ||
|  |   console.log('listening on 80'); | ||
|  | }); |