"connection not open on send()" 为 Kaleido 使用 Websocket 连接时出错
"connection not open on send()" error when using Websocket connection for Kaleido
我在连接到 Kaleido 节点的 Websocket 后立即收到 'connection not open on send()' 错误。我正在尝试使用 web3js 版本 1.0.0-beta.34 中的 WebsocketProvider。
我的连接代码如下所示,其中 username
、password
和 wssUrl
是包含 Kaleido 节点信息的局部变量。
const web3 = new Web3(new Web3.providers.WebsocketProvider(`wss://${username}:${password}@${wssUrl}`))
我已经尝试了 this Github issue 中列出的建议步骤 -- 如果连接丢失,尝试重新连接,但错误仍然存在。我认为这可能是 Kaleido 问题,因为我可以将 WebsocketProvider 用于本地 Ganache 帐户。
如果 Kaleido 节点能够使用 Websocket 连接会很有帮助,所以我可以使用 web3js 1.0 版。 HTTP 连接工作得很好,但在 web3js 1.0 中,不推荐使用 HttpProvider 监听事件,因此迫使您使用 WebsocketProvider。谢谢!
更新
web3js 1.0.0-beta.34 将回退到 Node JS 的遗留 URL 解析器。更改已交付给 ethereum/web3.js 的 1.0 分支以解决此问题。
要解决此问题:
npm i -g lerna
npm i https://github.com/ethereum/web3.js.git\#1.0
lerna只是web3项目在开发过程中依赖的构建工具
我刚刚查看了此请求的 Wireshark 日志,似乎 web3js 在 WebSocket 升级请求期间未通过基本 Authn headers。
GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: XXXX==
Host: zzzzz-zzzzz-wss.us-east-2.kaleido.io
有人可能认为 Sec-WebSocket-Key 是一个 Authn header,但它实际上是另一种攻击的协议对策。您可以在这个问题上阅读更多内容:What is Sec-WebSocket-Key for?
我会看看是否可以破解一个补丁来让它工作。
我在连接到 Kaleido 节点的 Websocket 后立即收到 'connection not open on send()' 错误。我正在尝试使用 web3js 版本 1.0.0-beta.34 中的 WebsocketProvider。
我的连接代码如下所示,其中 username
、password
和 wssUrl
是包含 Kaleido 节点信息的局部变量。
const web3 = new Web3(new Web3.providers.WebsocketProvider(`wss://${username}:${password}@${wssUrl}`))
我已经尝试了 this Github issue 中列出的建议步骤 -- 如果连接丢失,尝试重新连接,但错误仍然存在。我认为这可能是 Kaleido 问题,因为我可以将 WebsocketProvider 用于本地 Ganache 帐户。
如果 Kaleido 节点能够使用 Websocket 连接会很有帮助,所以我可以使用 web3js 1.0 版。 HTTP 连接工作得很好,但在 web3js 1.0 中,不推荐使用 HttpProvider 监听事件,因此迫使您使用 WebsocketProvider。谢谢!
更新
web3js 1.0.0-beta.34 将回退到 Node JS 的遗留 URL 解析器。更改已交付给 ethereum/web3.js 的 1.0 分支以解决此问题。
要解决此问题:
npm i -g lerna
npm i https://github.com/ethereum/web3.js.git\#1.0
lerna只是web3项目在开发过程中依赖的构建工具
我刚刚查看了此请求的 Wireshark 日志,似乎 web3js 在 WebSocket 升级请求期间未通过基本 Authn headers。
GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: XXXX==
Host: zzzzz-zzzzz-wss.us-east-2.kaleido.io
有人可能认为 Sec-WebSocket-Key 是一个 Authn header,但它实际上是另一种攻击的协议对策。您可以在这个问题上阅读更多内容:What is Sec-WebSocket-Key for?
我会看看是否可以破解一个补丁来让它工作。