Advertisement
Guest User

Untitled

a guest
Jun 9th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. var chat = {
  2. username: "<not set>",
  3. topic: "0xfeedbabe",
  4. key: "",
  5. identity: "",
  6. pollInterval: null,
  7. filter: null,
  8.  
  9. setUsername: function(name) {
  10. this.username = name;
  11. return true;
  12. },
  13.  
  14. join: function(password) {
  15. // create key from shared secret
  16. this.key = shh.generateSymKeyFromPassword(password);
  17.  
  18. // create pub/priv key for identity
  19. this.identity = shh.newKeyPair();
  20.  
  21. pubKey = shh.publicKey(this.identity);
  22. console.log("identity", pubKey.substr(2, 8));
  23.  
  24. // create message filter (console doesn't support subscriptions)
  25. this.filter = shh.newMessageFilter({
  26. symKeyID: this.key,
  27. topics: [this.topic],
  28. });
  29.  
  30. // poll for new messages
  31. me = this;
  32. this.pollInterval = setInterval(function() {
  33. me.pollMessages()
  34. }, 1000);
  35.  
  36. this.say("joined");
  37.  
  38. return true;
  39. },
  40.  
  41. pollMessages: function() {
  42. messages = shh.getFilterMessages(this.filter);
  43. for (i = 0; i < messages.length; i++) {
  44. printMessage(messages[i], this.username);
  45. }
  46. }
  47.  
  48. say: function(text) {
  49. message = {
  50. symKeyId: this.key,
  51. topic: this.topic,
  52. payload: web3.toHex(this.username + ": " + text),
  53. powTime: 5,
  54. powTarget: shh.info.minPow,
  55. sig: this.identity
  56. };
  57.  
  58. return shh.post(message);
  59. }
  60.  
  61. leave: function() {
  62. shh.deleteMessageFilter(this.filter);
  63. clearInterval(this.pollInterval);
  64. this.say("left...")
  65. console.log("chat room left");
  66. return true;
  67. },
  68. }
  69.  
  70. // start helper functions
  71. function time(message) {
  72. date = new Date(message.timestamp * 1000);
  73. hours = date.getHours();
  74. minutes = "0" + date.getMinutes();
  75. seconds = "0" + date.getSeconds();
  76.  
  77. return hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
  78. }
  79.  
  80. function sender(message) {
  81. return message.sig.substr(2, 8)
  82. }
  83.  
  84. function printMessage(message, myUsername) {
  85. line = web3.toAscii(message.payload);
  86. parts = line.split(":");
  87. name = parts[0]
  88. if (name !== myUsername) {
  89. console.log("[" + time(message) + " " + name + "/" + sender(message) + "]" + parts.slice(1).join(":"));
  90. }
  91. }
  92. // end helper functions
  93.  
  94. console.log("Supported functions:");
  95. console.log("* chat.setUsername(<name:string>)");
  96. console.log("* chat.join(<password:string>)");
  97. console.log("* chat.leave()");
  98. console.log("* chat.say(<message:string>)");
  99. console.log();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement