NodeJS - 基于 SSL 的 SocketIO 和 websocket 传输

2023-12-23

我有一个 NodeJS-socketIO 服务器,它有客户端从 JS、PHP 和 Python 监听。当通信通过普通 HTTP/WS 通道进行时,它就像一个魅力。

现在,当我尝试保护此通信时,Websocket 传输不再工作。它退回到 xhr-polling(长轮询)传输。 Xhr-polling 仍然适用于 JS 客户端,但不适用于纯粹依赖于套接字传输的 python。

我尝试过的事情:

  1. 在节点上,使用https(使用商业证书)而不是 http - 适用于通过 Node 提供页面,但不适用于 socketIO
  2. 代理通过HAProxy(1.15-dev19)。从 HTTPS(HAProxy)到 HTTP(Node)。无法让 Websocket 传输工作并且它退回到 xhr 轮询 on JS. Python获取502握手时.
  3. 代理通过STunnel(对于 HTTPS) -> HAProxy(Websocket Proxy) -> Node(SocketIO) - 这也不起作用。 Python 客户端在握手时仍然收到 502。
  4. 通过 Stunnel(HTTPS) -> Node(SocketIO) 进行代理 - 这也不起作用。不确定 STunnel 是否支持 websocket 代理
  5. 节点 http 代理:投掷 500(发生错误:{"code":"ECONNRESET"}) 在 websocket 上并回退到 xhr-polling

我确信这是一个常见的用例,并且存在解决方案。非常感谢任何帮助。

提前致谢!


我的情况看来是个罕见的案例。我在基于 Amazon Linux 的 EC2 实例上构建了整个环境。由于几乎所有 yum 软件包都不是最新的,我必须从源代码安装几乎所有 yum 软件包。通过这样做,我可能会错过未更改/添加的配置。或者 HAProxy 所需的库可能不是最新的。

无论如何,我尝试在基于 ubuntu 12.04 的 EC2 实例上再次构建环境。通过一些配置调整,HAProxy 的工作就像一个魅力。我现在可以通过 SSL 从 JS、Python 和 PHP 连接我的 SocketIO 服务器,没有任何问题。我还可以创建一个侦听 443 并将其代理到非标准端口 (8xxx) 的安全 TCP Amazon ELB。

如果其他人遇到类似问题,请告诉我,我将很乐意提供帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NodeJS - 基于 SSL 的 SocketIO 和 websocket 传输 的相关文章

随机推荐

  • jBPM 5:数据库表脚本在哪里?

    我在 JBPM 5 4 中创建了一个关于持久性的简单示例 它运作成功并且 记录已成功插入到创建的架构中的表中 但我的问题是 虽然该表是在架构中创建的 但它还创建了其他三个表 节点实例日志 变量实例日志 进程实例日志 但是创建这些表的脚本在哪
  • 通过Python创建文件和目录

    我在创建目录然后打开 创建 写入指定目录中的文件时遇到问题 我似乎不清楚原因 我正在使用 os mkdir 和 path chap name print Path chap path For debugging purposes if no
  • 使用http而不是https的redirect_uri

    我正在使用 spring stack Spring Boot 2 0 1 RELEASE 来创建一个通过 OAuth2 将用户身份验证 注册委托给 Facebook 的网站 当我单击 使用 facebook 登录 按钮时 我会被重定向到 F
  • jQuery 查找并替换第二个

    我想知道如何查找和替换 div 中的某些文本 但我想查找并替换该文本的第二次出现 例如 您刚刚添加了一个项目 请删除该项目 所以我想找到第二个 项目 并将其替换为我选择的任何文本 JS var compareCount compareWid
  • SQL日期格式和引用混乱

    我有以下测试记录 以下查询结果为 0 条记录 SELECT FROM events dates WHERE start date 21 12 2014 但以下查询结果为 1 条记录 SELECT FROM events dates WHER
  • 用 | 分割字符串java中的分隔符

    我有一个像这样的字符串 1 value 我想拆分该字符串并选择 作为分隔符 我的代码如下所示 String separated line split 我得到的是一个包含所有字符作为一个条目的数组 separated 0 separated
  • 为什么FolderBrowserDialog对话框不滚动到选定的文件夹?

    如该屏幕截图所示 所选文件夹不在视图中 需要向下滚动才能查看所选文件夹 同一对话框显示在不同计算机上可见的选定文件夹 我在两台装有 Windows 7 的计算机上运行它 它在一台计算机上运行正常 但在第二台计算机上运行不正常 它看起来与 W
  • 应用程序委托 - Cocoa

    我想将 applicationDidFinishLaunching 合并到我的可可委托中 我该怎么做 在 iphone SDK 上 applicationDidFinishLaunching 已经在应用程序委托中 但在制作我的 mac 应用
  • 如何对数据进行分箱以删除低计数?

    我想出于保护隐私的目的使用装箱来处理数据 数据涉及数字整数 并且必须以频率高于最小值的方式进行分箱 x 我还想最小化垃圾箱的宽度 以尽可能多地保留数据 最小化 bin 的宽度并没有严格定义 因为这只是避免不必要的数据丢失的一般目标 由于整数
  • 使用 SkiaSharp 调整大小时 iPhone 图像方向错误

    我在 Xamarin Forms 项目上使用 SkiaSharp 中的 SKBitmap Resize 方法来调整图像大小以供显示 我遇到的问题是在 iOS 上拍照时 当纵向拍摄照片时 图像显示为右侧朝上 在 Android 上拍照 从 A
  • 如何在jasper报告中使用divide()方法?

    我使用 iReport1 3 3 工具创建 pdf 和 xls 模板 我的问题是下面的表达式 V strloanNo divide V loanCalculation 我需要除以两个变量 但我没有得到预期的结果 它显示 null 值 大家有
  • 递归调用异步 API 调用

    我正在尝试从每次调用仅返回 1000 个项目的 API 中获取数据 并且我想递归地执行此操作 直到获得所有数据 我事先不知道总共有多少件物品 所以每次打电话后我都必须检查 如果调用是同步的 我会使用如下内容 function fetch a
  • 如何查找大括号之间的多行文本?

    我有下一个输入字符串 ANIM NAME KEY Index 26 AFrames 1 0x301C AF 0x201C 1 0 0 FREE ROTATE 0 FREE SCALE XY 100 100 我怎样才能得到两个花括号之间的整个
  • java.sql.SQLException:列计数与第 1 行错误的值计数不匹配[重复]

    这个问题在这里已经有答案了 我试图在表中插入数据 但它显示以下错误 java sql SQLException 列计数与第 1 行的值计数不匹配 我已经搜索了这个错误并尝试了所有解决方案 但仍然无法使其工作 这是我的代码 类 html
  • 从 data.frame 转换为数字矩阵时,为什么值会发生变化?

    我需要将数据框转换为数字矩阵 但是 当我使用data frame函数中 小数被转换为不同的数字 我不知道为什么 有人可以告诉我发生了什么事吗 gt head x 1 5 TCGA AA 3520 01A 01R 0821 07 TCGA A
  • 将 pandas 中的多索引与单索引数据帧合并

    我有两个数据框 df1 是多索引的 value first second a x 0 471780 y 0 774908 z 0 563634 b x 0 353756 y 0 368062 z 1 721840 and df2 value
  • 在 col 元素中声明事件对表的单元格有何影响?

    当在 HTML 表格的 col 元素中声明事件 例如 onclick 时 该事件是否会影响 col 元素引用的单元格 该事件是否被忽略 还会发生其他事情吗 很好的问题 The spec http www w3 org TR html4 st
  • 使用python进行视频编辑:向有声视频添加背景音乐

    我想在 python 中将背景音乐添加到视频文件 mp4 中 我查看了网络并使用 python 的 moviepy 做了一些技巧 但我没有找到一种将背景音乐添加到已包含音乐的视频文件中的方法 有什么想法如何做到这一点吗 编辑以下 Anil
  • 如果我们仅更改数据注释的 Display 属性,是否还需要运行 Add-Migration

    Note 这个问题与迁移 EF Core 与 ASP NET Core MVC https learn microsoft com en us aspnet core data ef mvc migrations 下面我只需要将显示注释中的
  • NodeJS - 基于 SSL 的 SocketIO 和 websocket 传输

    我有一个 NodeJS socketIO 服务器 它有客户端从 JS PHP 和 Python 监听 当通信通过普通 HTTP WS 通道进行时 它就像一个魅力 现在 当我尝试保护此通信时 Websocket 传输不再工作 它退回到 xhr