Json-Rpc
使用 websockets 或 IPC 的訂閱範例?
所以我很高興地使用了 NodeJS ‘web3’ 模組中的 web3 API,它執行得很好(它使用 HTTP 傳輸 AFAIU)。但現在我想從伺服器接收事件(沒有輪詢),為此我似乎需要使用訂閱 API。
但是,我剛剛連結的文件指出訂閱需要全雙工連接。Geth 以 websockets(使用 –ws 啟用)和 ipc(預設啟用)的形式提供此類連接。很公平。
但是,就我的一生而言,我找不到任何關於如何通過 IPC/WebSockets 連接的範例。如果文件包含一個簡單的 hello world 訂閱範例,那將是 rad。
你也可以使用 netcat :
➜ ~ nc -U /home/XXX/.ethereum/geth.ipc {"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":1} {"jsonrpc":"2.0","id":1,"result":"0xeeeeeeeeeeeeeeeeeeeeededededede"}
我以這種方式在 python 中連接,非常簡單:
➜ ~ ipython2 Python 2.7.11+ (default, May 9 2016, 15:54:33) Type "copyright", "credits" or "license" for more information. IPython 4.2.0 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In [1]: import socket In [3]: s=socket.socket(socket.AF_UNIX,socket.SOCK_STREAM) In [4]: s.connect("/home/XXX/.ethereum/geth.ipc") In [5]: message = '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":1}' In [6]: s.send(message) Out[6]: 60 In [7]: s.recv(1024) Out[7]: '{"jsonrpc":"2.0","id":1,"result":"0xeeeeeeeeeeeeeeeeeeeeededededede"}\n'
仍在瀏覽,似乎這個庫旨在完全按照您的意願行事,但在 python 中