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));
});