Substrate底層提供了豐富的RPC訪問接口和鏈上交互纵朋,具體見https://polkadot.js.org/api/substrate/rpc.html钞脂。Substrate的RPC server實(shí)現(xiàn)了HTTP和WebSocket兩種協(xié)議供客戶端訪問奶栖,默認(rèn)的服務(wù)端口分別是9933和9944。實(shí)現(xiàn)RPC HTTP client比較簡單抛杨,使用支持HTTP協(xié)議的第三方庫即可彤避,比如reqwest。這里介紹使用第三庫ws封裝一個RPC WebSoket client 模塊麦乞,通過它可以方便快捷訪問Substrate RPC server蕴茴。
首先在cargo.xml加入ws庫:
然后定義WsClient struct,實(shí)現(xiàn)幾個handler:
on_open()方法當(dāng)client和server建立連接后被調(diào)用姐直,它向server發(fā)送數(shù)據(jù)請求倦淀;on_message()方法當(dāng)server返回?cái)?shù)據(jù)時(shí)被調(diào)用,on_message_fn是一個回調(diào)函數(shù)声畏,負(fù)責(zé)把數(shù)據(jù)發(fā)送給接收方撞叽。on_get_request_msg()就是具體的回調(diào)函數(shù)姻成。
on_message()是模塊中唯一一個public函數(shù),它首先建立一個異步通信channel愿棋,得到發(fā)送端和接收端的通信句柄科展,然后調(diào)用ws庫的connect()方法和server建立連接,設(shè)置回調(diào)函數(shù)糠雨,發(fā)送數(shù)據(jù)才睹,最后等待10秒時(shí)間把接收到的數(shù)據(jù)作為函數(shù)返回結(jié)果。
可用如下方式使用本模塊:
That's all.