venus-gateway 代码解析
- gateway只是转发链组件(miner,messager)发送给本地组件(wallet,cluster,market)的一个代理,中间不会存储任何信息,所以也就没有用数据库。
- gateway也需要在auth服务中注册,也就是依赖auth组件,只依赖这一个服务,剩下的服务都是反向依赖gataway。反响依赖的含义是wallet,cluster,market本地组件不需要暴露组件服务的ip,而是通过websocket协议连接gateway,这样gateway需要调用本地组件时,通过websocket发起请求。
- 本地组件wallet通过请求walletevent/wallet_event.go的(w WalletEventStream) ListenWalletEvent()rpc接口方法来进行websocket连接的。通过这个方法连接时,gateway会生成一个golang 的channel,然后把channel通过 (w walletConnMgr) addNewConn()方法缓存起来,以备gateway向wallet服务发起请求。例如:miner服务需要签名时,通过rpc接口发送WalletSign请求,这个时候(w WalletEventStream) WalletSign()方法来处理这个http的rpc请求,处理方式是利用(w walletConnMgr) getChannels()方法获取channel,然后对channel发送walletSign请求给wallet。
版权声明
本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。