Json-Rpc

使用 websockets 或 IPC 的訂閱範例?

  • September 17, 2018

所以我很高興地使用了 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 中

引用自:https://ethereum.stackexchange.com/questions/4028