{"content":{"title":"venus-gateway 代码解析","body":"1.  gateway只是转发链组件（miner，messager）发送给本地组件（wallet，cluster，market）的一个代理，中间不会存储任何信息，所以也就没有用数据库。\r\n2.  gateway也需要在auth服务中注册，也就是依赖auth组件，只依赖这一个服务，剩下的服务都是反向依赖gataway。反响依赖的含义是wallet，cluster，market本地组件不需要暴露组件服务的ip，而是通过websocket协议连接gateway，这样gateway需要调用本地组件时，通过websocket发起请求。\r\n3.  本地组件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。\r\n4."},"author":{"user":"https://learnblockchain.cn/people/808","address":null},"history":null,"timestamp":1681893909,"version":1}