当前位置: 首页 > 知识库问答 >
问题:

“发送时连接未打开()”为Kaleido使用Websocket连接时出错

缑嘉玉
2023-03-14

我得到一个连接不打开发送()错误后立即连接到一个万花筒节点的网络套接字。我试图从web3js版本1.0.0-beta.34使用WebSocketProvider。

我的连接代码看起来像这样,其中username密码wssUrl是带有Kaleido节点信息的局部变量。

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

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

能够为Kaleido节点使用WebSocket连接会很有帮助,所以我可以使用web3js版本1.0。HTTP连接工作正常,但是在web3js 1.0中,不建议使用HttpProvider监听事件,从而迫使您使用Web门提供程序。谢谢!

共有1个答案

杨凌
2023-03-14

web3js 1.0.0-beta.34将回退到节点JS的传统URL解析器。已经向以太坊/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头。

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头,但它实际上是针对另一种攻击的协议对策。您可以在这个问题上阅读更多内容:Sec WebSocket密钥用于什么?

我会看一看,看看我是否能拼凑出一个补丁来让它工作。

 类似资料:
  • 当在客户端和服务器之间建立了连接之后,就会从Web Socket实例触发事件。它是客户端和服务器之间的初始握手。 建立连接之后引发的事件称为。创建Web Socket连接非常简单。所要做的就是调用WebSocket构造函数并传入服务器的URL。 以下代码用于创建Web Socket连接 - 建立连接后,将在Web Socket实例上触发事件。 是指客户端和服务器之间的初始握手,它会产生第一次交换,

  • 我正在使用套接字。io,应用程序由AWS提供。我收到一个浏览器控制台错误: websocket.js:54 WebSocket 连接到 'wss://www.tidee.com/socket.io/?EIO=4 客户代码: 服务器代码: 在 AWS 中,安全组接受端口 443,负载均衡器侦听端口 443。 应用程序在本地运行时工作(状态 101),并使用 协议。

  • 当应用程序尝试打开与硬件HSM的连接时,收到CKR\U GENERAL\U错误。 详细的错误是: 有人能告诉我这个错误的原因吗?该应用程序与软件HSM配合良好。 H/W HSM详细信息: ProtectToolkit C密钥管理实用程序:4.2.0(甚至在4.3.0中试用过) 制造商:Eracom 硬件版本:66.00 固件版本:2.02

  • 我正在制作一个Flask网络应用程序,我正在使用Flask Socketio。出于各种原因,我还需要使用websocket客户端包。一切正常,但当我尝试在不同网络上的不同计算机上运行应用程序时,出现以下错误: 我已经尽可能地将我的代码归结为以下内容,这些代码在我的计算机上仍然有效,但在另一台计算机上给出了相同的错误: 只是一个基本的“Hello World”html页面。 什么样的东西会让我在一台

  • 问题内容: 更新:我只是检查了我使用的最新的JDBC jar,并且缺少地图/Linux/arm/libsqlitejdbc.so,可以通过从某个地方下载该文件来解决此问题吗?在任何地方都找不到。 编辑:问题似乎是这个,但是我不知道如何解决这个问题。 我正在尝试在树莓派上使用SQLite数据库。但是我无法使其正常工作。我得到下面发布的输出。我正在使用JDBC驱动程序。该代码在我的主计算机上工作正常。

  • 我们使用PgBouncer作为基于spring的应用程序连接池的中间件。在应用程序中,我们使用HikariCP进行应用程序级连接池。 我们将HikariCP的值设置为一小时,将设置为30秒。