/ docs / messages_javascript.html
messages_javascript.html
  1  <!DOCTYPE html>
  2  <html lang="en" dir="ltr">
  3    <head prefix="og: http://ogp.me/ns#">
  4    <meta charset="utf-8">
  5    <title>Messages in JavaScript | Embark</title>
  6    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
  7    <meta name="viewport" content="width=device-width, initial-scale=1">
  8    <!-- Canonical links -->
  9    <link rel="canonical" href="https://framework.embarklabs.io/docs/messages_javascript.html">
 10    <!-- Alternative links -->
 11    
 12  
 13    <!-- Icon -->
 14    <meta name="msapplication-TileColor" content="#080E1A">
 15    <link rel="icon" type="image/png" href="/assets/images/favicon-16.png" sizes="16x16" />
 16    <link rel="icon" type="image/png" href="/assets/images/favicon-32.png" sizes="32x32" />
 17  
 18    <link rel="apple-touch-icon" sizes="76x76" href="/assets/images/apple-touch-icon-60x60-precomposed.png">
 19    <link rel="apple-touch-icon" sizes="76x76" href="/assets/images/apple-touch-icon-76x76-precomposed.png">
 20    <link rel="apple-touch-icon" sizes="120x120" href="/assets/images/apple-touch-icon-120x120-precomposed.png">
 21    <link rel="apple-touch-icon" sizes="152x152" href="/assets/images/apple-touch-icon-152x152-precomposed.png">
 22    <link rel="apple-touch-icon" sizes="180x180" href="/assets/images/apple-touch-icon-precomposed.png">
 23    <link rel="apple-touch-icon" href="/assets/images/apple-touch-icon-precomposed.png">
 24    <!-- CSS -->
 25    
 26  <link rel="stylesheet" href="/css/embark.css">
 27  
 28    <!-- endbuild -->
 29  
 30    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
 31    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
 32  
 33    <!-- RSS -->
 34    <link rel="alternate" href="/atom.xml" title="Embark">
 35    <meta property="og:image" content="/img/share.png?v=0.0.5" />
 36    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.4/styles/dracula.min.css">
 37  
 38    <script async defer src="https://buttons.github.io/buttons.js"></script>
 39  
 40  
 41  <script>
 42    !function(root, factory) {
 43      "function" == typeof define && define.amd ? // AMD. Register as an anonymous module unless amdModuleId is set
 44      define([], function() {
 45          return root.svg4everybody = factory();
 46      }) : "object" == typeof module && module.exports ? // Node. Does not work with strict CommonJS, but
 47      // only CommonJS-like environments that support module.exports,
 48      // like Node.
 49      module.exports = factory() : root.svg4everybody = factory();
 50  }(this, function() {
 51      /*! svg4everybody v2.1.9 | github.com/jonathantneal/svg4everybody */
 52      function embed(parent, svg, target) {
 53          // if the target exists
 54          if (target) {
 55              // create a document fragment to hold the contents of the target
 56              var fragment = document.createDocumentFragment(), viewBox = !svg.hasAttribute("viewBox") && target.getAttribute("viewBox");
 57              // conditionally set the viewBox on the svg
 58              viewBox && svg.setAttribute("viewBox", viewBox);
 59              // copy the contents of the clone into the fragment
 60              for (// clone the target
 61              var clone = target.cloneNode(!0); clone.childNodes.length; ) {
 62                  fragment.appendChild(clone.firstChild);
 63              }
 64              // append the fragment into the svg
 65              parent.appendChild(fragment);
 66          }
 67      }
 68      function loadreadystatechange(xhr) {
 69          // listen to changes in the request
 70          xhr.onreadystatechange = function() {
 71              // if the request is ready
 72              if (4 === xhr.readyState) {
 73                  // get the cached html document
 74                  var cachedDocument = xhr._cachedDocument;
 75                  // ensure the cached html document based on the xhr response
 76                  cachedDocument || (cachedDocument = xhr._cachedDocument = document.implementation.createHTMLDocument(""),
 77                  cachedDocument.body.innerHTML = xhr.responseText, xhr._cachedTarget = {}), // clear the xhr embeds list and embed each item
 78                  xhr._embeds.splice(0).map(function(item) {
 79                      // get the cached target
 80                      var target = xhr._cachedTarget[item.id];
 81                      // ensure the cached target
 82                      target || (target = xhr._cachedTarget[item.id] = cachedDocument.getElementById(item.id)),
 83                      // embed the target into the svg
 84                      embed(item.parent, item.svg, target);
 85                  });
 86              }
 87          }, // test the ready state change immediately
 88          xhr.onreadystatechange();
 89      }
 90      function svg4everybody(rawopts) {
 91          function oninterval() {
 92              // while the index exists in the live <use> collection
 93              for (// get the cached <use> index
 94              var index = 0; index < uses.length; ) {
 95                  // get the current <use>
 96                  var use = uses[index], parent = use.parentNode, svg = getSVGAncestor(parent), src = use.getAttribute("xlink:href") || use.getAttribute("href");
 97                  if (!src && opts.attributeName && (src = use.getAttribute(opts.attributeName)),
 98                  svg && src) {
 99                      if (polyfill) {
100                          if (!opts.validate || opts.validate(src, svg, use)) {
101                              // remove the <use> element
102                              parent.removeChild(use);
103                              // parse the src and get the url and id
104                              var srcSplit = src.split("#"), url = srcSplit.shift(), id = srcSplit.join("#");
105                              // if the link is external
106                              if (url.length) {
107                                  // get the cached xhr request
108                                  var xhr = requests[url];
109                                  // ensure the xhr request exists
110                                  xhr || (xhr = requests[url] = new XMLHttpRequest(), xhr.open("GET", url), xhr.send(),
111                                  xhr._embeds = []), // add the svg and id as an item to the xhr embeds list
112                                  xhr._embeds.push({
113                                      parent: parent,
114                                      svg: svg,
115                                      id: id
116                                  }), // prepare the xhr ready state change event
117                                  loadreadystatechange(xhr);
118                              } else {
119                                  // embed the local id into the svg
120                                  embed(parent, svg, document.getElementById(id));
121                              }
122                          } else {
123                              // increase the index when the previous value was not "valid"
124                              ++index, ++numberOfSvgUseElementsToBypass;
125                          }
126                      }
127                  } else {
128                      // increase the index when the previous value was not "valid"
129                      ++index;
130                  }
131              }
132              // continue the interval
133              (!uses.length || uses.length - numberOfSvgUseElementsToBypass > 0) && requestAnimationFrame(oninterval, 67);
134          }
135          var polyfill, opts = Object(rawopts), newerIEUA = /\bTrident\/[567]\b|\bMSIE (?:9|10)\.0\b/, webkitUA = /\bAppleWebKit\/(\d+)\b/, olderEdgeUA = /\bEdge\/12\.(\d+)\b/, edgeUA = /\bEdge\/.(\d+)\b/, inIframe = window.top !== window.self;
136          polyfill = "polyfill" in opts ? opts.polyfill : newerIEUA.test(navigator.userAgent) || (navigator.userAgent.match(olderEdgeUA) || [])[1] < 10547 || (navigator.userAgent.match(webkitUA) || [])[1] < 537 || edgeUA.test(navigator.userAgent) && inIframe;
137          // create xhr requests object
138          var requests = {}, requestAnimationFrame = window.requestAnimationFrame || setTimeout, uses = document.getElementsByTagName("use"), numberOfSvgUseElementsToBypass = 0;
139          // conditionally start the interval if the polyfill is active
140          polyfill && oninterval();
141      }
142      function getSVGAncestor(node) {
143          for (var svg = node; "svg" !== svg.nodeName.toLowerCase() && (svg = svg.parentNode); ) {}
144          return svg;
145      }
146      return svg4everybody;
147  });
148  
149  svg4everybody();
150  </script>
151  </head>
152  
153    <body>
154      <header role="banner" class="c-header c-header--compact">
155    <span class="c-header__background"></span>
156    <div class="o-container c-header__content">
157      <div class="c-header__top">
158        <a href="/" title="Embark" class="c-logo c-logo--negative">Embark</a>
159        <nav role="navigation" class="c-navigation">
160          <div class="c-navigation__header">
161            <a href="/" title="Embark" class="c-logo">Embark</a>
162            <button class="c-navigation__close u-text-light" title="Close menu">
163              <svg class="c-icon c-icon--xs"><use xlink:href="/../assets/icons/symbols.svg#icon-close"></use></svg>
164            </button>
165          </div>
166          <div class="c-navigation__body">
167            <ul class="c-navigation__list">
168              <li class="c-navigation__item">
169                <a href="/docs/quick_start.html" class="c-navigation__anchor " title="Quick Start">Quick Start</a>
170              </li>
171              <li class="c-navigation__item">
172                <a href="/docs" class="c-navigation__anchor is-active" title="Learn">Learn</a>
173              </li>
174              <li class="c-navigation__item">
175                <a href="/plugins" class="c-navigation__anchor " title="Plugins">Plugins</a>
176              </li>
177              <li class="c-navigation__item">
178                <a href="/community" class="c-navigation__anchor " title="Community">Community</a>
179              </li>
180              <li class="c-navigation__item">
181                <a href="https://blog.embarklabs.io" target="_blank" rel="noopener" class="c-navigation__anchor " title="Blog">Blog</a>
182              </li>
183            </ul>
184          </div>
185        </nav>
186        <div class="o-flex o-flex-center">
187          <form action="" class="o-flex__item u-hidden-until-large">
188            <input type="search" placeholder="Search" id="search-input">
189          </form>
190          <div class="o-flex__item">
191            <ul class="o-flex o-flex-center">
192              <li class="o-flex__item">
193                <a href="https://github.com/embarklabs/embark" title="Github" target="_blank" class="u-link-ghost">
194                  <svg class="c-icon"><use xlink:href="/../assets/icons/symbols.svg#icon-github"></use></svg>
195                </a>
196              </li>
197              <li class="o-flex__item">
198                <a href="https://twitter.com/EmbarkProject" title="Twitter" target="_blank">
199                  <svg class="c-icon"><use xlink:href="/../assets/icons/symbols.svg#icon-twitter"></use></svg>
200                </a>
201              </li>
202              <li class="o-flex__item u-hidden-large-up">
203                <button type="button"class="c-navigation__trigger u-link-ghost" title="Open menu">
204                  <svg class="c-icon"><use xlink:href="/../assets/icons/symbols.svg#icon-navigation-menu"></use></svg>
205                </button>
206              </li>
207            </ul>
208          </div>
209        </div>
210      </div>
211      <div class="c-quick-search o-distance-m u-hidden-large-up">
212        <input type="search" id="inp-search" placeholder="Search">
213      </div>
214      <div class="c-header__body">
215        <h1 class="c-title u-text-ghost">Documentation</h1>
216  
217        
218  
219        
220        
221      </div>
222    </div>
223  </header>
224  
225  
226  <main role="main">
227    <section class="o-guided-content o-distance">
228      <div class="o-guided-content__wrapper">
229        <button title="Open docs menu" id="guides-trigger" class="c-button c-button--minion u-hidden-large-up">
230          <svg class="c-icon c-icon--xs"><use xlink:href="/../../assets/icons/symbols.svg#icon-navigation-menu"></use></svg>
231          <span>Guides</span>
232        </button>
233        <div class="c-guide o-guided-content__guide"  id="guide-navigation">
234          <div class="c-guide__header u-hidden-large-up">
235            <a href="" title="Guides">
236              Guides
237            </a>
238            <button type="button" title="Close menu" id="guides-close">
239              <svg class="c-icon c-icon--xs"><use xlink:href="/../../assets/icons/symbols.svg#icon-close"></use></svg>
240            </button>
241          </div>
242          <div class="c-guide__body">
243            <nav role="navigation">
244              
245                <div class="">
246                  <h3 class="c-category-title">Getting Started</h3>
247                  <ul class="o-list-bare">
248                    
249                    <li class="o-list-bare__item">
250                      <a href="/docs/overview.html" title="Overview" class="u-link-uniform ">Overview</a>
251                      <!-- <div class="o-distance-m">
252                        <ul class="o-list-bare c-navigation__subnav">
253                          <li class="o-list-bare__item">
254                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
255                          </li>
256                        </ul>
257                      </div> -->
258                    </li>
259                    
260                    <li class="o-list-bare__item">
261                      <a href="/docs/installation.html" title="Installation" class="u-link-uniform ">Installation</a>
262                      <!-- <div class="o-distance-m">
263                        <ul class="o-list-bare c-navigation__subnav">
264                          <li class="o-list-bare__item">
265                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
266                          </li>
267                        </ul>
268                      </div> -->
269                    </li>
270                    
271                    <li class="o-list-bare__item">
272                      <a href="/docs/faq.html" title="FAQ" class="u-link-uniform ">FAQ</a>
273                      <!-- <div class="o-distance-m">
274                        <ul class="o-list-bare c-navigation__subnav">
275                          <li class="o-list-bare__item">
276                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
277                          </li>
278                        </ul>
279                      </div> -->
280                    </li>
281                    
282                  </ul>
283                
284              
285                <div class="o-distance-xl">
286                  <h3 class="c-category-title">General Usage</h3>
287                  <ul class="o-list-bare">
288                    
289                    <li class="o-list-bare__item">
290                      <a href="/docs/create_project.html" title="Creating apps" class="u-link-uniform ">Creating apps</a>
291                      <!-- <div class="o-distance-m">
292                        <ul class="o-list-bare c-navigation__subnav">
293                          <li class="o-list-bare__item">
294                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
295                          </li>
296                        </ul>
297                      </div> -->
298                    </li>
299                    
300                    <li class="o-list-bare__item">
301                      <a href="/docs/structure.html" title="App structure" class="u-link-uniform ">App structure</a>
302                      <!-- <div class="o-distance-m">
303                        <ul class="o-list-bare c-navigation__subnav">
304                          <li class="o-list-bare__item">
305                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
306                          </li>
307                        </ul>
308                      </div> -->
309                    </li>
310                    
311                    <li class="o-list-bare__item">
312                      <a href="/docs/running_apps.html" title="Running apps" class="u-link-uniform ">Running apps</a>
313                      <!-- <div class="o-distance-m">
314                        <ul class="o-list-bare c-navigation__subnav">
315                          <li class="o-list-bare__item">
316                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
317                          </li>
318                        </ul>
319                      </div> -->
320                    </li>
321                    
322                    <li class="o-list-bare__item">
323                      <a href="/docs/dashboard.html" title="Using the dashboard" class="u-link-uniform ">Using the dashboard</a>
324                      <!-- <div class="o-distance-m">
325                        <ul class="o-list-bare c-navigation__subnav">
326                          <li class="o-list-bare__item">
327                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
328                          </li>
329                        </ul>
330                      </div> -->
331                    </li>
332                    
333                    <li class="o-list-bare__item">
334                      <a href="/docs/using_the_console.html" title="Using the console" class="u-link-uniform ">Using the console</a>
335                      <!-- <div class="o-distance-m">
336                        <ul class="o-list-bare c-navigation__subnav">
337                          <li class="o-list-bare__item">
338                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
339                          </li>
340                        </ul>
341                      </div> -->
342                    </li>
343                    
344                    <li class="o-list-bare__item">
345                      <a href="/docs/environments.html" title="Environments" class="u-link-uniform ">Environments</a>
346                      <!-- <div class="o-distance-m">
347                        <ul class="o-list-bare c-navigation__subnav">
348                          <li class="o-list-bare__item">
349                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
350                          </li>
351                        </ul>
352                      </div> -->
353                    </li>
354                    
355                    <li class="o-list-bare__item">
356                      <a href="/docs/configuration.html" title="Configuration" class="u-link-uniform ">Configuration</a>
357                      <!-- <div class="o-distance-m">
358                        <ul class="o-list-bare c-navigation__subnav">
359                          <li class="o-list-bare__item">
360                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
361                          </li>
362                        </ul>
363                      </div> -->
364                    </li>
365                    
366                    <li class="o-list-bare__item">
367                      <a href="/docs/pipeline_and_webpack.html" title="Building & Compiling" class="u-link-uniform ">Building & Compiling</a>
368                      <!-- <div class="o-distance-m">
369                        <ul class="o-list-bare c-navigation__subnav">
370                          <li class="o-list-bare__item">
371                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
372                          </li>
373                        </ul>
374                      </div> -->
375                    </li>
376                    
377                    <li class="o-list-bare__item">
378                      <a href="/docs/executing_scripts.html" title="Executing Scripts" class="u-link-uniform ">Executing Scripts</a>
379                      <!-- <div class="o-distance-m">
380                        <ul class="o-list-bare c-navigation__subnav">
381                          <li class="o-list-bare__item">
382                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
383                          </li>
384                        </ul>
385                      </div> -->
386                    </li>
387                    
388                    <li class="o-list-bare__item">
389                      <a href="/docs/javascript_usage.html" title="Using EmbarkJS" class="u-link-uniform ">Using EmbarkJS</a>
390                      <!-- <div class="o-distance-m">
391                        <ul class="o-list-bare c-navigation__subnav">
392                          <li class="o-list-bare__item">
393                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
394                          </li>
395                        </ul>
396                      </div> -->
397                    </li>
398                    
399                  </ul>
400                </div>
401              
402                <div class="o-distance-xl">
403                  <h3 class="c-category-title">Smart Contract Development</h3>
404                  <ul class="o-list-bare">
405                    
406                    <li class="o-list-bare__item">
407                      <a href="/docs/contracts_configuration.html" title="Configuration" class="u-link-uniform ">Configuration</a>
408                      <!-- <div class="o-distance-m">
409                        <ul class="o-list-bare c-navigation__subnav">
410                          <li class="o-list-bare__item">
411                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
412                          </li>
413                        </ul>
414                      </div> -->
415                    </li>
416                    
417                    <li class="o-list-bare__item">
418                      <a href="/docs/contracts_deployment.html" title="Accounts & Deployment" class="u-link-uniform ">Accounts & Deployment</a>
419                      <!-- <div class="o-distance-m">
420                        <ul class="o-list-bare c-navigation__subnav">
421                          <li class="o-list-bare__item">
422                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
423                          </li>
424                        </ul>
425                      </div> -->
426                    </li>
427                    
428                    <li class="o-list-bare__item">
429                      <a href="/docs/contracts_imports.html" title="Special Imports" class="u-link-uniform ">Special Imports</a>
430                      <!-- <div class="o-distance-m">
431                        <ul class="o-list-bare c-navigation__subnav">
432                          <li class="o-list-bare__item">
433                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
434                          </li>
435                        </ul>
436                      </div> -->
437                    </li>
438                    
439                    <li class="o-list-bare__item">
440                      <a href="/docs/contracts_testing.html" title="Testing" class="u-link-uniform ">Testing</a>
441                      <!-- <div class="o-distance-m">
442                        <ul class="o-list-bare c-navigation__subnav">
443                          <li class="o-list-bare__item">
444                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
445                          </li>
446                        </ul>
447                      </div> -->
448                    </li>
449                    
450                    <li class="o-list-bare__item">
451                      <a href="/docs/contracts_javascript.html" title="Smart Contracts in JavaScript" class="u-link-uniform ">Smart Contracts in JavaScript</a>
452                      <!-- <div class="o-distance-m">
453                        <ul class="o-list-bare c-navigation__subnav">
454                          <li class="o-list-bare__item">
455                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
456                          </li>
457                        </ul>
458                      </div> -->
459                    </li>
460                    
461                  </ul>
462                </div>
463              
464                <div class="o-distance-xl">
465                  <h3 class="c-category-title">Blockchain Client</h3>
466                  <ul class="o-list-bare">
467                    
468                    <li class="o-list-bare__item">
469                      <a href="/docs/blockchain_configuration.html" title="Configuration" class="u-link-uniform ">Configuration</a>
470                      <!-- <div class="o-distance-m">
471                        <ul class="o-list-bare c-navigation__subnav">
472                          <li class="o-list-bare__item">
473                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
474                          </li>
475                        </ul>
476                      </div> -->
477                    </li>
478                    
479                    <li class="o-list-bare__item">
480                      <a href="/docs/blockchain_accounts_configuration.html" title="Managing Accounts" class="u-link-uniform ">Managing Accounts</a>
481                      <!-- <div class="o-distance-m">
482                        <ul class="o-list-bare c-navigation__subnav">
483                          <li class="o-list-bare__item">
484                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
485                          </li>
486                        </ul>
487                      </div> -->
488                    </li>
489                    
490                  </ul>
491                </div>
492              
493                <div class="o-distance-xl">
494                  <h3 class="c-category-title">Storage (IPFS/Swarm)</h3>
495                  <ul class="o-list-bare">
496                    
497                    <li class="o-list-bare__item">
498                      <a href="/docs/storage_configuration.html" title="Configuration" class="u-link-uniform ">Configuration</a>
499                      <!-- <div class="o-distance-m">
500                        <ul class="o-list-bare c-navigation__subnav">
501                          <li class="o-list-bare__item">
502                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
503                          </li>
504                        </ul>
505                      </div> -->
506                    </li>
507                    
508                    <li class="o-list-bare__item">
509                      <a href="/docs/storage_deployment.html" title="Deploying apps" class="u-link-uniform ">Deploying apps</a>
510                      <!-- <div class="o-distance-m">
511                        <ul class="o-list-bare c-navigation__subnav">
512                          <li class="o-list-bare__item">
513                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
514                          </li>
515                        </ul>
516                      </div> -->
517                    </li>
518                    
519                    <li class="o-list-bare__item">
520                      <a href="/docs/storage_javascript.html" title="Storage APIs in JavaScript" class="u-link-uniform ">Storage APIs in JavaScript</a>
521                      <!-- <div class="o-distance-m">
522                        <ul class="o-list-bare c-navigation__subnav">
523                          <li class="o-list-bare__item">
524                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
525                          </li>
526                        </ul>
527                      </div> -->
528                    </li>
529                    
530                  </ul>
531                </div>
532              
533                <div class="o-distance-xl">
534                  <h3 class="c-category-title">Messages (Whisper)</h3>
535                  <ul class="o-list-bare">
536                    
537                    <li class="o-list-bare__item">
538                      <a href="/docs/messages_configuration.html" title="Configuration" class="u-link-uniform ">Configuration</a>
539                      <!-- <div class="o-distance-m">
540                        <ul class="o-list-bare c-navigation__subnav">
541                          <li class="o-list-bare__item">
542                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
543                          </li>
544                        </ul>
545                      </div> -->
546                    </li>
547                    
548                    <li class="o-list-bare__item">
549                      <a href="/docs/messages_javascript.html" title="Messages in JavaScript" class="u-link-uniform is-active">Messages in JavaScript</a>
550                      <!-- <div class="o-distance-m">
551                        <ul class="o-list-bare c-navigation__subnav">
552                          <li class="o-list-bare__item">
553                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
554                          </li>
555                        </ul>
556                      </div> -->
557                    </li>
558                    
559                  </ul>
560                </div>
561              
562                <div class="o-distance-xl">
563                  <h3 class="c-category-title">Naming Systems (ENS)</h3>
564                  <ul class="o-list-bare">
565                    
566                    <li class="o-list-bare__item">
567                      <a href="/docs/naming_configuration.html" title="Configuration" class="u-link-uniform ">Configuration</a>
568                      <!-- <div class="o-distance-m">
569                        <ul class="o-list-bare c-navigation__subnav">
570                          <li class="o-list-bare__item">
571                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
572                          </li>
573                        </ul>
574                      </div> -->
575                    </li>
576                    
577                    <li class="o-list-bare__item">
578                      <a href="/docs/naming_javascript.html" title="Naming Systems in JavaScript" class="u-link-uniform ">Naming Systems in JavaScript</a>
579                      <!-- <div class="o-distance-m">
580                        <ul class="o-list-bare c-navigation__subnav">
581                          <li class="o-list-bare__item">
582                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
583                          </li>
584                        </ul>
585                      </div> -->
586                    </li>
587                    
588                  </ul>
589                </div>
590              
591                <div class="o-distance-xl">
592                  <h3 class="c-category-title">Plugins</h3>
593                  <ul class="o-list-bare">
594                    
595                    <li class="o-list-bare__item">
596                      <a href="/docs/installing_plugins.html" title="Installing plugins" class="u-link-uniform ">Installing plugins</a>
597                      <!-- <div class="o-distance-m">
598                        <ul class="o-list-bare c-navigation__subnav">
599                          <li class="o-list-bare__item">
600                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
601                          </li>
602                        </ul>
603                      </div> -->
604                    </li>
605                    
606                    <li class="o-list-bare__item">
607                      <a href="/docs/creating_plugins.html" title="Creating plugins" class="u-link-uniform ">Creating plugins</a>
608                      <!-- <div class="o-distance-m">
609                        <ul class="o-list-bare c-navigation__subnav">
610                          <li class="o-list-bare__item">
611                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
612                          </li>
613                        </ul>
614                      </div> -->
615                    </li>
616                    
617                    <li class="o-list-bare__item">
618                      <a href="/docs/plugin_reference.html" title="Plugin APIs" class="u-link-uniform ">Plugin APIs</a>
619                      <!-- <div class="o-distance-m">
620                        <ul class="o-list-bare c-navigation__subnav">
621                          <li class="o-list-bare__item">
622                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
623                          </li>
624                        </ul>
625                      </div> -->
626                    </li>
627                    
628                  </ul>
629                </div>
630              
631                <div class="o-distance-xl">
632                  <h3 class="c-category-title">Cockpit Guides</h3>
633                  <ul class="o-list-bare">
634                    
635                    <li class="o-list-bare__item">
636                      <a href="/docs/cockpit_introduction.html" title="Introduction" class="u-link-uniform ">Introduction</a>
637                      <!-- <div class="o-distance-m">
638                        <ul class="o-list-bare c-navigation__subnav">
639                          <li class="o-list-bare__item">
640                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
641                          </li>
642                        </ul>
643                      </div> -->
644                    </li>
645                    
646                    <li class="o-list-bare__item">
647                      <a href="/docs/cockpit_dashboard.html" title="Using the Dashboard" class="u-link-uniform ">Using the Dashboard</a>
648                      <!-- <div class="o-distance-m">
649                        <ul class="o-list-bare c-navigation__subnav">
650                          <li class="o-list-bare__item">
651                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
652                          </li>
653                        </ul>
654                      </div> -->
655                    </li>
656                    
657                    <li class="o-list-bare__item">
658                      <a href="/docs/cockpit_deployment.html" title="Deployment" class="u-link-uniform ">Deployment</a>
659                      <!-- <div class="o-distance-m">
660                        <ul class="o-list-bare c-navigation__subnav">
661                          <li class="o-list-bare__item">
662                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
663                          </li>
664                        </ul>
665                      </div> -->
666                    </li>
667                    
668                    <li class="o-list-bare__item">
669                      <a href="/docs/cockpit_explorer.html" title="Explorer View" class="u-link-uniform ">Explorer View</a>
670                      <!-- <div class="o-distance-m">
671                        <ul class="o-list-bare c-navigation__subnav">
672                          <li class="o-list-bare__item">
673                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
674                          </li>
675                        </ul>
676                      </div> -->
677                    </li>
678                    
679                    <li class="o-list-bare__item">
680                      <a href="/docs/cockpit_editor.html" title="Code Editor" class="u-link-uniform ">Code Editor</a>
681                      <!-- <div class="o-distance-m">
682                        <ul class="o-list-bare c-navigation__subnav">
683                          <li class="o-list-bare__item">
684                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
685                          </li>
686                        </ul>
687                      </div> -->
688                    </li>
689                    
690                    <li class="o-list-bare__item">
691                      <a href="/docs/cockpit_debugger.html" title="Using the Debugger" class="u-link-uniform ">Using the Debugger</a>
692                      <!-- <div class="o-distance-m">
693                        <ul class="o-list-bare c-navigation__subnav">
694                          <li class="o-list-bare__item">
695                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
696                          </li>
697                        </ul>
698                      </div> -->
699                    </li>
700                    
701                  </ul>
702                </div>
703              
704                <div class="o-distance-xl">
705                  <h3 class="c-category-title">Reference</h3>
706                  <ul class="o-list-bare">
707                    
708                    <li class="o-list-bare__item">
709                      <a href="/docs/embark_commands.html" title="CLI Commands" class="u-link-uniform ">CLI Commands</a>
710                      <!-- <div class="o-distance-m">
711                        <ul class="o-list-bare c-navigation__subnav">
712                          <li class="o-list-bare__item">
713                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
714                          </li>
715                        </ul>
716                      </div> -->
717                    </li>
718                    
719                  </ul>
720                </div>
721              
722                <div class="o-distance-xl">
723                  <h3 class="c-category-title">Miscellaneous</h3>
724                  <ul class="o-list-bare">
725                    
726                    <li class="o-list-bare__item">
727                      <a href="/docs/migrating_from_3.x.html" title="Migrating from Embark 3.x" class="u-link-uniform ">Migrating from Embark 3.x</a>
728                      <!-- <div class="o-distance-m">
729                        <ul class="o-list-bare c-navigation__subnav">
730                          <li class="o-list-bare__item">
731                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
732                          </li>
733                        </ul>
734                      </div> -->
735                    </li>
736                    
737                    <li class="o-list-bare__item">
738                      <a href="/docs/troubleshooting.html" title="Troubleshooting" class="u-link-uniform ">Troubleshooting</a>
739                      <!-- <div class="o-distance-m">
740                        <ul class="o-list-bare c-navigation__subnav">
741                          <li class="o-list-bare__item">
742                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
743                          </li>
744                        </ul>
745                      </div> -->
746                    </li>
747                    
748                    <li class="o-list-bare__item">
749                      <a href="/docs/contributing.html" title="Contributing" class="u-link-uniform ">Contributing</a>
750                      <!-- <div class="o-distance-m">
751                        <ul class="o-list-bare c-navigation__subnav">
752                          <li class="o-list-bare__item">
753                            <a href="#" title="What is Embark?" class="u-link-uniform">What is Embark?</a>
754                          </li>
755                        </ul>
756                      </div> -->
757                    </li>
758                    
759                  </ul>
760                </div>
761              
762            </nav>
763          </div>
764        </div>
765        <div class="o-guided-content__content">
766          <p class="c-meta">Last updated: January 19th 2020
767            (<a href="https://github.com/embarklabs/embark/edit/master/site/source/docs/messages_javascript.md" target="_blank">
768              Improve this guide <svg class="c-icon c-icon--xs"><use xlink:href="/../../assets/icons/symbols.svg#icon-pen-write-paper"></use></svg>
769            </a>)
770          </p>
771          <div class="o-standard-page">
772            <h1>Messages in JavaScript</h1>
773            <p>Embark’s companion library EmbarkJS comes with some convenient APIs to easily subscribe to and sending messages using messages protocols like Whisper. In this guide we’ll take a closer look how this works.</p>
774  <p>Make sure to read our guide in <a href="/docs/javascript.html">using EmbarkJS</a> first.</p>
775  <h2 id="Setting-up-EmbarkJS"><a href="#Setting-up-EmbarkJS" class="headerlink" title="Setting up EmbarkJS"></a>Setting up EmbarkJS</h2><p>By default Embark will initialize EmbarkJS with the provider configured at <code>config/communication.js</code>. However if we are using EmbarkJS directly or wish to change the provider configuration at runtime, we can do so using the <code>setProvider()</code> method:</p>
776  <figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">EmbarkJS.Messages.setProvider(&#39;whisper&#39;)</span><br></pre></td></tr></table></figure>
777  
778  <h2 id="Listening-to-messages"><a href="#Listening-to-messages" class="headerlink" title="Listening to messages"></a>Listening to messages</h2><p>We can subscribe to channels using the <code>listenTo()</code> method by specifying a list of channel topics like this:</p>
779  <figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">EmbarkJS.Messages.listenTo(&#123;</span><br><span class="line">  topic: [&#39;topic1&#39;, &#39;topic2&#39;]</span><br><span class="line">&#125;).subscribe(message &#123;</span><br><span class="line">  console.log(&#39;received: &#39; + message);</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure>
780  
781  <p><code>listenTo()</code> returns an Observable that we can subscribe to. Observables work great if multiple values can be emitted over time, which is exactly the case for messages being emitted with Whisper. In other words, this is a long-living Observable, so it’s important to unsubscribe from it once we’re no longer interested in the data. Otherwise we’ll introduce memory leaks.</p>
782  <h2 id="Sending-messages"><a href="#Sending-messages" class="headerlink" title="Sending messages"></a>Sending messages</h2><p>Sending messages can be done using the <code>sendMessage()</code> method and it’s entirely up to use whether we want to send plain text messages or even objects.</p>
783  <p>Here’s how to send a plain text message to the <code>sometopic</code> topic:</p>
784  <figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">EmbarkJS.Messages.sendMessage(&#123;</span><br><span class="line">  topic: &#39;sometopic&#39;,</span><br><span class="line">  data: &#39;hello world&#39;</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure>
785  
786  <p>And this code snippet shows how to send an object structure:</p>
787  <figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">EmbarkJS.Messages.sendMessage(&#123;</span><br><span class="line">  topic: &#39;sometopic&#39;,</span><br><span class="line">  data: &#123; msg: &#39;hello world&#39; &#125;</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure>
788  
789  <p>Notice that a topic/channel name has to be at least 4 characters long. Whisper will otherwise emit an error on the subscription.</p>
790  <div class="c-notification c-notification--info">
791    <p><strong>On topic arrays:</strong></p>
792    <p><p>Array of topics are considered an AND. In Whisper you can use another array for OR combinations of several topics e.g <code>[&quot;topic1&quot;, [&quot;topic2&quot;, &quot;topic3&quot;]]</code> =&gt; <code>topic1 AND (topic2 OR topic 3)</code>.</p>
793  </p>
794  </div> 
795  
796  
797  
798  
799          </div>
800          <div class="o-container-medium o-distance-l">
801            <div class="o-flex o-flex-space-between">
802    
803    <div class="o-flex__item">
804      <a href="/docs/messages_configuration.html" class="c-button c-button--quite" title="Previous article">Previous</a>
805    </div>
806    
807    
808    <div class="o-flex__item">
809      <a href="/docs/naming_configuration.html" class="c-button c-button--quite" title="Next article">Next</a>
810    </div>
811    
812  </div>
813  
814  
815          </div>
816        </div>
817        <div class="o-guided-content__addition">
818          <h3 class="c-category-title">Contents</h3>
819          <ol class="o-list-bare"><li class="o-list-bare__item o-list-bare-level-2 o-ellipsis"><a href="#Setting-up-EmbarkJS" class="u-link-uniform">Setting up EmbarkJS</a></li><li class="o-list-bare__item o-list-bare-level-2 o-ellipsis"><a href="#Listening-to-messages" class="u-link-uniform">Listening to messages</a></li><li class="o-list-bare__item o-list-bare-level-2 o-ellipsis"><a href="#Sending-messages" class="u-link-uniform">Sending messages</a></li></ol>
820        </div>
821      </div>
822    </section>
823  </main>
824  
825  <script src="/js/linkjuice/dist/linkjuice.min.js"></script>
826  
827      <footer role="contentinfo" class="c-footer o-distance-xxl">
828    <div class="o-container">
829      <div class="c-footer__top">
830        <p class="c-category-title c-footer__top__title u-text-light">
831          <a href="/" class="c-logo c-logo--negative" title="Embark">Embark</a>
832        </p>
833      </div>
834      <div class="c-footer__body">
835        <div class="o-grid">
836          <div class="o-grid__column--1-1 o-grid__column--medium-1-2 o-grid__column--large-1-5">
837            <p class="c-category-title u-text-light">Resources</p>
838            <ul class="o-list-bare">
839              <li class="o-list-bare__item">
840                <a href="/docs/quick_start.html" class="u-link-ghost" title="Quick Start">Quick Start</a>
841              </li>
842              <li class="o-list-bare__item">
843                <a href="/docs" class="u-link-ghost" title="Documentation">Documentation</a>
844              </li>
845              <li class="o-list-bare__item">
846                <a href="https://blog.embarklabs.io" target="_blank" rel="noopener" class="u-link-ghost" title="Blog">Blog</a>
847              </li>
848              <li class="o-list-bare__item">
849                <a href="/docs/faq.html" class="u-link-ghost" title="FAQ">FAQ</a>
850              </li>
851              <li class="o-list-bare__item">
852                <a href="/docs/troubleshooting.html" class="u-link-ghost" title="Troubleshooting">Troubleshooting</a>
853              </li>
854            </ul>
855          </div>
856          <div class="o-grid__column--1-1 o-grid__column--medium-1-2 o-grid__column--large-1-5">
857            <p class="c-category-title u-text-light">Help</p>
858            <ul class="o-list-bare">
859              <li class="o-list-bare__item">
860                <a href="https://stackoverflow.com/questions/tagged/embark" target="_blank" rel="noopener" class="u-link-ghost" title="Embark Questions">Stack Overflow</a>
861              </li>
862              <li class="o-list-bare__item">
863                <a href="https://gitter.im/embark-framework/Lobby" target="_blank" rel="noopener" class="u-link-ghost" title="Gitter">Gitter</a>
864              </li>
865              <li class="o-list-bare__item">
866                <a href="https://github.com/embarklabs/embark/issues" target="_blank" rel="noopener" class="u-link-ghost" title="Report issues">Report issues</a>
867              </li>
868              <li class="o-list-bare__item">
869                <a href="https://github.com/embarklabs/embark/blob/master/CODE_OF_CONDUCT.md" target="_blank" rel="noopener" class="u-link-ghost" title="Code of Conduct">Code of Conduct</a>
870              </li>
871            </ul>
872          </div>
873          <div class="o-grid__column--1-1 o-grid__column--medium-1-2 o-grid__column--large-1-5">
874            <p class="c-category-title u-text-light">Community</p>
875            <ul class="o-list-bare">
876              <li class="o-list-bare__item">
877                <a href="https://github.com/embarklabs" target="_blank" rel="noopener" class="u-link-ghost" title="Github">Github</a>
878              </li>
879              <li class="o-list-bare__item">
880                <a href="https://twitter.com/EmbarkProject" target="_blank" rel="noopener" class="u-link-ghost" title="Twitter">Twitter</a>
881              </li>
882              <li class="o-list-bare__item">
883                <a href="/docs/contributing.html" class="u-link-ghost" title="Contribute">Contribute</a>
884              </li>
885              <li class="o-list-bare__item">
886                <a href="/community/#team" class="u-link-ghost" title="Team">Team</a>
887              </li>
888            </ul>
889          </div>
890  
891          <div class="o-grid__column--1-1 o-grid__column--medium-1-2 o-grid__column--large-1-4">
892            <p class="c-category-title u-text-light">The Status Network</p>
893            <ul class="o-list-bare two-columns">
894              <li class="o-list-bare__item"><a class="u-link-ghost" href="https://status.im/" target="_blank">Status</a></li>
895              <li class="o-list-bare__item"><a class="u-link-ghost" href="https://keycard.tech/" target="_blank">Keycard</a></li>
896              <li class="o-list-bare__item"><a class="u-link-ghost" href="https://dap.ps/" target="_blank">dap.ps</a></li>
897              <li class="o-list-bare__item"><a class="u-link-ghost" href="https://teller.exchange/" target="_blank">Teller</a></li>
898              <li class="o-list-bare__item"><a class="u-link-ghost" href="https://assemble.fund/" target="_blank">Assemble</a></li>
899              <li class="o-list-bare__item"><a class="u-link-ghost" href="https://subspace.embarklabs.io/" target="_blank">Subspace</a></li>
900              <li class="o-list-bare__item"><a class="u-link-ghost" href="https://vac.dev/" target="_blank">Vac</a></li>
901              <li class="o-list-bare__item"><a class="u-link-ghost" href="https://nimbus.team/" target="_blank">Nimbus</a></li>
902            </ul>
903          </div>
904        </div>
905      </div>
906      <div class="c-footer__bottom">
907        <p class="u-text-light">
908          <a href="https://status.im/privacy-policy.html" title="Privacy Policy" target="_blank" class="u-text-light">Privacy Policy</a>
909          / © 2019-2020 Embark
910        </p>
911      </div>
912    </div>
913  </footer>
914  
915  
916  
917  
918      <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.4/highlight.min.js"></script>
919      <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script>
920      <script>
921        const EMBARK_DOC_VERSIONS = {
922          'latest': 'https://framework.embarklabs.io/docs','3.2': 'https://5ca4e0fdb29712000adde37f--embark-site-versions.netlify.com/docs/'
923        };
924      </script>
925  
926      
927      <!-- Fathom - simple website analytics - https://github.com/usefathom/fathom -->
928      <script>
929      (function(f, a, t, h, o, m){
930          a[h]=a[h]||function(){(a[h].q=a[h].q||[]).push(arguments)};
931          o=f.createElement('script'),
932          m=f.getElementsByTagName('script')[0];
933          o.async=1; o.src=t; o.id='fathom-script';
934          m.parentNode.insertBefore(o,m)
935      })(document, window, '//fathom.status.im/tracker.js', 'fathom');
936      fathom('set', 'siteId', 'YDUQQ');
937      fathom('trackPageview');
938      </script>
939      <!-- / Fathom -->
940      
941  
942      <script src="/js/index.js"></script>
943  
944      
945      <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
946      <script type="text/javascript">
947        docsearch({
948          apiKey: '439d8dc2add18007a2f31be4a9c0ed70',
949          indexName: 'embark',
950          inputSelector: '#search-input'
951        });
952      </script>
953      
954    </body>
955  </html>
956