web3.shh.post - 发送whisper消息

优质
小牛编辑
128浏览
2023-12-01

调用web3.shh.post()方法向网络中发送一个whisper消息。

调用:

web3.shh.post(object [, callback])

参数:

  • object: Object - 结构如下:
    • symKeyID - String,可选,用于信息加密的对称秘钥ID
    • pubKey - String,可选,用于消息加密的公钥,pubKey或symKeyID不能同时使用
    • sig - String,可选,签名密钥的ID
    • ttl - Number: 以秒为单位的消息存活时长
    • topic - String: 4 Bytes ,消息主题
    • payload - String: 消息中要加密的载荷部分
    • padding - Number,可选,对齐长度
    • powTime - Number ,可选,POW时间上限,以秒为单位
    • powTarget - Number ,可选,消息发送对象为处理此消息需要的最小PoW
    • targetPeer - Number,可选,对端ID,仅用于端对端消息
  • callback - Function: 可选的回调函数,其第一个参数为错误对象,第二个参数为返回结果

返回值:

一个Promise对象,在发送成功时其解析值为所发送消息的哈希值字符串,出错时将解析为错误原因。

示例代码:

var identities = [];
var subscription = null;

Promise.all([
    web3.shh.newSymKey().then((id) => {identities.push(id);}),
    web3.shh.newKeyPair().then((id) => {identities.push(id);})

]).then(() => {

    // will receive also its own message send, below
    subscription = shh.subscribe("messages", {
        symKeyID: identities[0],
        topics: ['0xffaadd11']
    }).on('data', console.log);

}).then(() => {
   web3.shh.post({
        symKeyID: identities[0], // encrypts using the sym key ID
        sig: identities[1], // signs the message using the keyPair ID
        ttl: 10,
        topic: '0xffaadd11',
        payload: '0xffffffdddddd1122',
        powTime: 3,
        powTarget: 0.5
    }).then(h => console.log(`Message with hash ${h} was successfuly sent`))
    .catch(err => console.log("Error: ", err));
});