Substrate底層提供了豐富的RPC訪問接口和鏈上交互,具體見https://polkadot.js.org/api/substrate/rpc.html。Substrate的RPC server實現(xiàn)了HTTP和WebSocket兩種協(xié)議供客戶端訪問,默認的服務端口分別是9933和9944。實現(xiàn)RPC HTTP client比較簡單,使用支持HTTP協(xié)議的第三方庫即可,比如reqwest。這里介紹使用第三庫ws封裝一個RPC WebSoket client 模塊,通過它可以方便快捷訪問Substrate RPC server。
首先在cargo.xml加入ws庫:

然后定義WsClient struct,實現(xiàn)幾個handler:

on_open()方法當client和server建立連接后被調用,它向server發(fā)送數(shù)據(jù)請求;on_message()方法當server返回數(shù)據(jù)時被調用,on_message_fn是一個回調函數(shù),負責把數(shù)據(jù)發(fā)送給接收方。on_get_request_msg()就是具體的回調函數(shù)。

on_message()是模塊中唯一一個public函數(shù),它首先建立一個異步通信channel,得到發(fā)送端和接收端的通信句柄,然后調用ws庫的connect()方法和server建立連接,設置回調函數(shù),發(fā)送數(shù)據(jù),最后等待10秒時間把接收到的數(shù)據(jù)作為函數(shù)返回結果。
可用如下方式使用本模塊:

That's all.