Updated Whisper Push Notifications (markdown)
parent
50ca90fb33
commit
e7e202ad89
|
@ -62,6 +62,9 @@ var newChatSessionTopic = '0x509579a2'; // NEW_CHAT_SESSION
|
||||||
var ackNewChatSessionTopic = '0xd012aae8'; // ACK_NEW_CHAT_SESSION
|
var ackNewChatSessionTopic = '0xd012aae8'; // ACK_NEW_CHAT_SESSION
|
||||||
var newDeviceRegistrationTopic = '0x14621a51'; // NEW_DEVICE_REGISTRATION
|
var newDeviceRegistrationTopic = '0x14621a51'; // NEW_DEVICE_REGISTRATION
|
||||||
var ackDeviceRegistrationTopic = '0x424358d6'; // ACK_DEVICE_REGISTRATION
|
var ackDeviceRegistrationTopic = '0x424358d6'; // ACK_DEVICE_REGISTRATION
|
||||||
|
var checkClientSessionTopic = '0x8745d931'; // CHECK_CLIENT_SESSION
|
||||||
|
var confirmClientSessionTopic = '0xd3202c5f'; // CONFIRM_CLIENT_SESSION
|
||||||
|
var dropClientSessionTopic = '0x3a6656bb'; // DROP_CLIENT_SESSION
|
||||||
```
|
```
|
||||||
|
|
||||||
Finally, in order to test everything out, you'd better use two different clients not one. So, assume that we have two nodes (`Device A` and `Device B`) which have different underlying Status daemons:
|
Finally, in order to test everything out, you'd better use two different clients not one. So, assume that we have two nodes (`Device A` and `Device B`) which have different underlying Status daemons:
|
||||||
|
@ -390,6 +393,65 @@ We provide all the code for `Device B` in a single chunk. Basically, all that `D
|
||||||
|
|
||||||
### 4. Checking subscription status and unsubscribing
|
### 4. Checking subscription status and unsubscribing
|
||||||
|
|
||||||
|
```js
|
||||||
|
var checkClientSessionTopic = '0x8745d931'; // CHECK_CLIENT_SESSION
|
||||||
|
var confirmClientSessionTopic = '0xd3202c5f'; // CONFIRM_CLIENT_SESSION
|
||||||
|
var dropClientSessionTopic = '0x3a6656bb'; // DROP_CLIENT_SESSION
|
||||||
|
var removeClientSession = function () {
|
||||||
|
var checkClientSession = function (callback) {
|
||||||
|
// before sending request, let's start waiting for response
|
||||||
|
var filter = web3.shh.filter({
|
||||||
|
to: identity,
|
||||||
|
topics: [confirmClientSessionTopic]
|
||||||
|
});
|
||||||
|
filter.watch(function (error, result) {
|
||||||
|
if (!error) {
|
||||||
|
// response will be in JSON, e.g. {"server": "0xdeadbeef", "key": "0xdeadbeef"}
|
||||||
|
var payload = JSON.parse(web3.toAscii(result.payload));
|
||||||
|
console.log("Client session confirmation received: ", result, payload);
|
||||||
|
|
||||||
|
// no need to watch for the filter any more
|
||||||
|
filter.stopWatching();
|
||||||
|
|
||||||
|
callback(payload)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// send enquiry to all servers, to learn whether we have a client session with any of them
|
||||||
|
var err = web3.shh.post({
|
||||||
|
from: identity,
|
||||||
|
to: protocolKey,
|
||||||
|
topics: [checkClientSessionTopic],
|
||||||
|
ttl: 20
|
||||||
|
});
|
||||||
|
if (err !== null) {
|
||||||
|
console.log("message NOT sent")
|
||||||
|
} else {
|
||||||
|
console.log("message sent OK")
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
checkClientSession(function (payload) {
|
||||||
|
console.log("time to cleanup: ", payload.server);
|
||||||
|
console.log("session key: ", payload.key);
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
// notify server that you want to unsubscribe
|
||||||
|
var err = web3.shh.post({
|
||||||
|
from: identity,
|
||||||
|
to: protocolKey,
|
||||||
|
topics: [dropClientSessionTopic],
|
||||||
|
ttl: 20
|
||||||
|
});
|
||||||
|
if (err !== null) {
|
||||||
|
console.log("message NOT sent")
|
||||||
|
} else {
|
||||||
|
console.log("message sent OK")
|
||||||
|
}
|
||||||
|
}, 5000); // let's all other concurrent tasks to wrap up
|
||||||
|
});
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
# Complete Sample
|
# Complete Sample
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue