首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Kaleido使用Websocket连接时出现的“send()未打开的连接”错误

为Kaleido使用Websocket连接时出现的“send()未打开的连接”错误
EN

Stack Overflow用户
提问于 2018-07-12 12:15:22
回答 1查看 5.9K关注 0票数 0

在连接到Kaleido节点的Websocket后,我立即得到一个‘连接在send()上没有打开’的错误。我正在尝试使用来自WebsocketProvider版本1.0.0-beta.34的web3js。

我的连接代码如下所示,其中usernamepasswordwssUrl是包含Kaleido节点信息的局部变量。

const web3 = new Web3(new Web3.providers.WebsocketProvider(`wss://${username}:${password}@${wssUrl}`))

我已经尝试了这个吉特布问题中列出的建议步骤--尝试在连接丢失时重新连接,但是错误仍然存在。我认为这可能是一个Kaleido问题,因为我可以使用WebsocketProvider的本地加纳赫帐户。

如果能够为Kaleido节点使用Websocket连接会很有帮助,所以我可以使用web3js 1.0版本。HTTP工作得很好,但是在web3js 1.0中,不推荐侦听带有HttpProvider的事件,从而迫使您使用WebsocketProvider。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-12 14:28:42

更新

web3js 1.0.0-beta.34将回到Node的遗留URL解析器。为了解决这一问题,已经将更改提交给了ethereum/web3.js的1.0分支。

为了解决这个问题:

代码语言:javascript
复制
npm i -g lerna
npm i https://github.com/ethereum/web3.js.git\#1.0

勒纳只是web3项目在开发过程中所依赖的一个构建工具。

我刚刚看到了这个请求的Wireshark日志,似乎web3js在WebSocket升级请求期间没有传递基本的Authn头。

代码语言:javascript
复制
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是一个Authn头,但它实际上是另一种攻击的协议对策。您可以在以下问题上阅读更多内容:证券交易委员会-WebSocket-钥匙是干什么用的?

我会看一看,看看我是否能破解一个补丁,使这个工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51305482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档