概括 这将是一个问题......如何让 websockets 通过 node.js 中的代理?
在我的特殊情况下 我将 pusher.com 与 node.js client library 一起使用他们推荐。查看代码内部,我想知道一些关于我应该更改什么以使该库与代理一起工作的提示...您可以查看代码 here
也许我应该以某种方式替换或修改 websockets module图书馆正在使用它吗?
编辑
感谢您的回答/评论!需要考虑的几件事(如果我对某些/全部错误,请原谅,只是学习):
- 我不想创建代理服务器。我只想使用公司内现有的代理服务器来代理我的 websockets 请求(尤其是 pusher.com)
- 只是想让你知道,如果我使用类似 windows 的代理程序 Proxifier并且我设置了规则来检查所有到端口 443 的连接是否通过代理服务器 proxy-my.coporate.com:1080(类型 SOCKS5)它非常有效。
- 但我不想走这条路。我想在我的 Node js 代码中以编程方式配置此代理服务器(即使这涉及修改我提到的推送器库)
- 我知道如何使用 Request module 为 HTTP 执行此操作(查找提到如何使用代理的部分)。
- 我想为 websockets 做一个类似的事情。
最佳答案
来自 https://www.npmjs.com/package/https-proxy-agent
var url = require('url');
var WebSocket = require('ws');
var HttpsProxyAgent = require('https-proxy-agent');
// HTTP/HTTPS proxy to connect to
var proxy = process.env.http_proxy || 'http://168.63.76.32:3128';
console.log('using proxy server %j', proxy);
// WebSocket endpoint for the proxy to connect to
var endpoint = process.argv[2] || 'ws://echo.websocket.org';
var parsed = url.parse(endpoint);
console.log('attempting to connect to WebSocket %j', endpoint);
// create an instance of the `HttpsProxyAgent` class with the proxy server information
var options = url.parse(proxy);
var agent = new HttpsProxyAgent(options);
// finally, initiate the WebSocket connection
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('"message" event! %j %j', data, flags);
socket.close();
});
关于javascript - 如何让 websockets 通过 node.js 中的代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23686379/