如何在 Whisper 上發送 1-N 信令或廣播消息?
低延遲、1-1 或 1-N 信令消息。
Shh.post(self, message:)和Whisper Usage / shh.post
創建一個耳語消息並將其註入網路以進行分發。
的範例用法
web3.shh.post
,有關更多詳細資訊,請參閱此答案:web3.shh.post({ pubKey: 'PUBLIC_KEY_OF_THE_RECEIVER', ttl: 3600, topic: '0x07678231', powTarget: 2.01, powTime: 2, payload: web3.fromAscii("Hello there!") });
當我
pubKey
從web3.shh.post
作為參數中刪除時;它說:Error: specify either a symmetric or an asymmetric key
。
shh.post({ "topic": t, "payload": p });
無簽名,無加密:匿名廣播;有點像匿名主題過濾的 Twitter 提要。**$$ Q $$**由於
web3.shh.post()
需要我們提供接收方的單一公鑰;是否可以使用發送 1-N 或廣播消息whisper protocol
?如果是,如何?
我建議使用此文件:https ://github.com/ethereum/go-ethereum/wiki/Whisper
您發布的連結已過時,而且適用於 Whisper v 2.0
答:如果您為所有收件人提供相同的 symKey,則可能是 1:N 消息。
PS 我發布的連結是針對 Whisper 5.0 的,目前版本的 Whisper 是 6.0 但無論如何 v6 的 API 幾乎與 v5 相同。
在 node-1 的 geth-client 上:
generatedSymKey=shh.generateSymKeyFromPassword("hello"); symKey=shh.getSymKey(generatedSymKey) symKeyID=shh.addSymKey(symKey) //ex: "d5212e736703afbb21246e8acd192e4345ea910398544d765ed6b49f0ec524b5" filter = web3.shh.newMessageFilter( {symKeyID:symKeyID, topic: '0x07678231'}, function(err, res) {console.log(web3.toUtf8(res.payload))});
在 node-2 的 geth-client 上:
generatedSymKey=shh.generateSymKeyFromPassword("hello") symKey=shh.getSymKey(generatedSymKey) symKeyID=shh.addSymKey(symKey) //ex: "c4c4cecf6ad9499c2386b8ce6416f44684e042e491726b38315646c0b4afadc6" filter = web3.shh.newMessageFilter( {symKeyID:symKeyID, topic: '0x07678231'}, function(err, res) {console.log(web3.toUtf8(res.payload))});
然後,在另一個節點上發送消息,並且兩個消息都顯示在node-1和node-2上,即使
symKeyID
是node-1或node-2的shh.post()
功能。以下程式碼執行在
node-1's geth-client
:給出了節點 1
symKeyID
:web3.shh.post({ symKeyID: 'd5212e736703afbb21246e8acd192e4345ea910398544d765ed6b49f0ec524b5', //symKeyID of the node-1 ttl: 10, topic: '0x07678231', powTarget: 2.01, powTime: 2, payload: web3.fromAscii("Hello there!") });
或者
以下程式碼執行在
node-2's geth-client
:給出了節點 2
symKeyID
:web3.shh.post({ symKeyID: 'c4c4cecf6ad9499c2386b8ce6416f44684e042e491726b38315646c0b4afadc6', //symKeyID of the node-2 ttl: 10, topic: '0x07678231', powTarget: 2.01, powTime: 2, payload: web3.fromAscii("Hello there!") });