Прокси для WS (Node JS)



  • Здравствуйте. Изучаю работу с Node JS, понадобилось разрулить дела по ВебСокетам. Есть такой код:

    await (new Promise((resolve, reject) => {
    WebSocket = require("ws");
    var SocksProxyAgent = require('socks-proxy-agent');
    
    var endpoint = 'ws://echo.websocket.org';
    var proxy = 'socks://127.0.0.1:9050';
    
    // create an instance of the `SocksProxyAgent` class with the proxy server information
    var agent = new SocksProxyAgent(proxy);
    
    // initiate the WebSocket connection
    
    
    var ws = new WebSocket(endpoint,[], { agent: agent });
    
    
    	ws.on("open", function open() {
    		global.tost = "connected";
            console.log('Сработало событие OPEN у сокета');
    	});
     
    	ws.on("message", function incoming(data) {
    		global.tost = data;
    		ws.send(JSON.stringify({
              type: 'CHAT_MESSAGE',
              data: {
    		  message: 'test'
    		  }
            }));
            console.log('Отправили сообщение серверу');
            console.log('Получили такой ответ:');
            console.log(global.tost);
            }
        });
    
        ws.on("close", function close() {
    		global.tost = "disconnected";
            console.log(global.tost);
            resolve();
    	});
    	
    }));
    

    Скрипт выполняется до бесконечности, и сайт не даёт соединиться по вебсокету, вроде как.

    Использую модули:

    https://www.npmjs.com/package/ws
    https://github.com/TooTallNate/node-socks-proxy-agent

    Может кто подсказать как прикрутить прокси к сокетам? http или socks5, это без разницы. За любую помощь буду очень благодарен.



  • или может с помощью BAS_API можно поставить прокси



  • @Cruzel Всё прекрасно работает:

    await (new Promise((resolve, reject) => {
    var WebSocket = require('ws');
    var SocksProxyAgent = require('socks-proxy-agent');
     
    var proxy = 'socks://127.0.0.1:9150';
    var endpoint = 'wss://echo.websocket.org/';
    var agent = new SocksProxyAgent(proxy);
    var socket = new WebSocket(endpoint, { agent: agent });
     
    socket.on('open', function () {
      console.log('open event!');
      socket.send('hello world');
    });
     
    socket.on('message', function (data, flags) {
      console.log(data);
      resolve()
      socket.close();
    });
    	
    }));
    

    0_1535391871304_47167904-6a32-401e-a1a5-1a9036eb0f84-изображение.png

    Вот тестовый скрипт


    Используется Tor, он должен быть запущен


Log in to reply