You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					86 lines
				
				2.6 KiB
			
		
		
			
		
	
	
					86 lines
				
				2.6 KiB
			| 
											3 years ago
										 | # socks
 | ||
|  | 
 | ||
|  | ## Migrating from v1
 | ||
|  | 
 | ||
|  | For the most part, migrating from v1 takes minimal effort as v2 still supports factory creation of proxy connections with callback support. | ||
|  | 
 | ||
|  | ### Notable breaking changes
 | ||
|  | 
 | ||
|  | - In an options object, the proxy 'command' is now required and does not default to 'connect'. | ||
|  | - **In an options object, 'target' is now known as 'destination'.** | ||
|  | - Sockets are no longer paused after a SOCKS connection is made, so socket.resume() is no longer required. (Please be sure to attach data handlers immediately to the Socket to avoid losing data). | ||
|  | - In v2, only the 'connect' command is supported via the factory SocksClient.createConnection function. (BIND and ASSOCIATE must be used with a SocksClient instance via event handlers). | ||
|  | - In v2, the factory SocksClient.createConnection function callback is called with a single object rather than separate socket and info object. | ||
|  | - A SOCKS http/https agent is no longer bundled into the library. | ||
|  | 
 | ||
|  | For informational purposes, here is the original getting started example from v1 converted to work with v2. | ||
|  | 
 | ||
|  | ### Before (v1)
 | ||
|  | 
 | ||
|  | ```javascript | ||
|  | var Socks = require('socks'); | ||
|  | 
 | ||
|  | var options = { | ||
|  |     proxy: { | ||
|  |         ipaddress: "202.101.228.108", | ||
|  |         port: 1080, | ||
|  |         type: 5 | ||
|  |     }, | ||
|  |     target: { | ||
|  |         host: "google.com", | ||
|  |         port: 80 | ||
|  |     }, | ||
|  |     command: 'connect' | ||
|  | }; | ||
|  | 
 | ||
|  | Socks.createConnection(options, function(err, socket, info) { | ||
|  |     if (err) | ||
|  |         console.log(err); | ||
|  |     else { | ||
|  |         socket.write("GET / HTTP/1.1\nHost: google.com\n\n"); | ||
|  |         socket.on('data', function(data) { | ||
|  |             console.log(data.length); | ||
|  |             console.log(data); | ||
|  |         }); | ||
|  | 
 | ||
|  |         // PLEASE NOTE: sockets need to be resumed before any data will come in or out as they are paused right before this callback is fired. | ||
|  |         socket.resume(); | ||
|  | 
 | ||
|  |         // 569 | ||
|  |         // <Buffer 48 54 54 50 2f 31 2e 31 20 33 30 31 20 4d 6f 76 65 64 20 50 65... | ||
|  |     } | ||
|  | }); | ||
|  | ``` | ||
|  | 
 | ||
|  | ### After (v2)
 | ||
|  | ```javascript | ||
|  | const SocksClient = require('socks').SocksClient; | ||
|  | 
 | ||
|  | let options = { | ||
|  |     proxy: { | ||
|  |         ipaddress: "202.101.228.108", | ||
|  |         port: 1080, | ||
|  |         type: 5 | ||
|  |     }, | ||
|  |     destination: { | ||
|  |         host: "google.com", | ||
|  |         port: 80 | ||
|  |     }, | ||
|  |     command: 'connect' | ||
|  | }; | ||
|  | 
 | ||
|  | SocksClient.createConnection(options, function(err, result) { | ||
|  |     if (err) | ||
|  |         console.log(err); | ||
|  |     else { | ||
|  |         result.socket.write("GET / HTTP/1.1\nHost: google.com\n\n"); | ||
|  |         result.socket.on('data', function(data) { | ||
|  |             console.log(data.length); | ||
|  |             console.log(data); | ||
|  |         }); | ||
|  | 
 | ||
|  |         // 569 | ||
|  |         // <Buffer 48 54 54 50 2f 31 2e 31 20 33 30 31 20 4d 6f 76 65 64 20 50 65... | ||
|  |     } | ||
|  | }); | ||
|  | ``` |