javascript - 如何让 websockets 通过 node.js 中的代理

标签 javascript node.js proxy websocket push-notification

概括 这将是一个问题......如何让 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/

相关文章:

javascript - react JS |渲染多个元素

javascript - 带函数的普通 JavaScript,函数未定义

即使添加中间件后 CSS 文件也未加载

node.js - 重写规则,以便正确加载具有绝对路径的 css 和 js 文件

python - 有没有一种方法可以在不使用中间件的情况下使用 scrapy 代理?

javascript - React onChange 文本输入将光标移动到输入字段中的文本末尾

javascript - d3.js 堆栈图

json - 如何管理多个 JSON 模式文件?

python - 请求 : [Errno 8] _ssl. c:504 的 HTTPS 代理:EOF 发生在违反协议(protocol)的情况下

android - android上有没有像fiddler或wireshark这样的http代理?