| OLD | NEW | 
|    1 --- |    1 --- | 
|    2 # WARNING: GENERATED FILE. DO NOT EDIT. |    2 # WARNING: GENERATED FILE. DO NOT EDIT. | 
|    3 # WANT TO CONTRIBUTE? SEE https://github.com/dart-lang/dart-up-and-running-book |    3 # WANT TO CONTRIBUTE? SEE https://github.com/dart-lang/dart-up-and-running-book | 
|    4 layout: book |    4 layout: book | 
|    5 title: "Chapter 5. Walkthrough: Dartiverse Search from Dart: Up and Running" |    5 title: "Chapter 5. Walkthrough: Dartiverse Search from Dart: Up and Running" | 
|    6 description: "Read Chapter 5. Walkthrough: Dartiverse Search of Dart: Up and Run
     ning, published by O'Reilly." |    6 description: "Read Chapter 5. Walkthrough: Dartiverse Search of Dart: Up and Run
     ning, published by O'Reilly." | 
|    7 --- |    7 --- | 
|    8 <div class="navheader"><table width="100%" summary="Navigation header"><tr><th c
     olspan="3" align="center">Chapter 5. Walkthrough: Dartiverse Search</th></tr><tr
     ><td width="20%" align="left"><a accesskey="p" href="ch04-summary.html">Prev</a>
      </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a acc
     esskey="n" href="colophon.html">Next</a></td></tr></table><hr></div><div class="
     chapter"><div class="titlepage"><div><div><h1 class="title"><a name="ch05"></a>C
     hapter 5. Walkthrough: Dartiverse Search</h1></div></div></div><div class="toc">
     <p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="
     ch05.html#ch05-how-to-run">How to Run Dartiverse Search</a></span></dt><dt><span
      class="sect1"><a href="ch05.html#ch05-how-it-works">How Dartiverse Search Works
     </a></span></dt><dt><span class="sect1"><a href="ch05.html#ch05-client-html">The
      Client's HTML Code</a></span></dt><dt><span class="sect1"><a href="ch05.html#ch
     05-client-dart">The Client's Dart Code</a></span></dt><dd><dl><dt><span class="s
     ect2"><a href="ch05.html#ch05-client-dart-find-elements">Finding DOM Elements</a
     ></span></dt><dt><span class="sect2"><a href="ch05.html#ch05-client-dart-handle-
     events">Handling Events</a></span></dt><dt><span class="sect2"><a href="ch05.htm
     l#ch05-client-dart-properties">Getting and Setting Properties</a></span></dt><dt
     ><span class="sect2"><a href="ch05.html#ch05-client-dart-add-elements">Adding DO
     M Elements</a></span></dt><dt><span class="sect2"><a href="ch05.html#ch05-client
     -dart-json">Encoding and Decoding Messages</a></span></dt><dt><span class="sect2
     "><a href="ch05.html#ch05-client-dart-web-sockets">Communicating with WebSockets
     </a></span></dt></dl></dd><dt><span class="sect1"><a href="ch05.html#ch05-server
     ">The Server's Code</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch05
     .html#ch05-server-static">Serving Static Files</a></span></dt><dt><span class="s
     ect2"><a href="ch05.html#ch05-server-web-socket">Managing WebSocket Connections<
     /a></span></dt><dt><span class="sect2"><a href="ch05.html#ch05-server-web-apis">
     Using Web APIs</a></span></dt><dt><span class="sect2"><a href="ch05.html#ch05-se
     rver-library">Implementing a Library</a></span></dt><dt><span class="sect2"><a h
     ref="ch05.html#ch05-server-logging">Logging Messages</a></span></dt></dl></dd><d
     t><span class="sect1"><a href="ch05.html#ch05-what-next">What Next?</a></span></
     dt></dl></div><p>This chapter points out some of the useful and fun features of 
     the |    8 <div class="navheader"><table width="100%" summary="Navigation header"><tr><th c
     olspan="3" align="center">Chapter 5. Walkthrough: Dartiverse Search</th></tr><tr
     ><td width="20%" align="left"><a accesskey="p" href="ch04-summary.html">Prev</a>
      </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a acc
     esskey="n" href="colophon.html">Next</a></td></tr></table><hr></div><div class="
     chapter"><div class="titlepage"><div><div><h1 class="title"><a name="ch05"></a>C
     hapter 5. Walkthrough: Dartiverse Search</h1></div></div></div><div class="toc">
     <p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="
     ch05.html#ch05-how-to-run">How to Run Dartiverse Search</a></span></dt><dt><span
      class="sect1"><a href="ch05.html#ch05-how-it-works">How Dartiverse Search Works
     </a></span></dt><dt><span class="sect1"><a href="ch05.html#ch05-client-html">The
      Client's HTML Code</a></span></dt><dt><span class="sect1"><a href="ch05.html#ch
     05-client-dart">The Client's Dart Code</a></span></dt><dd><dl><dt><span class="s
     ect2"><a href="ch05.html#ch05-client-dart-find-elements">Finding DOM Elements</a
     ></span></dt><dt><span class="sect2"><a href="ch05.html#ch05-client-dart-handle-
     events">Handling Events</a></span></dt><dt><span class="sect2"><a href="ch05.htm
     l#ch05-client-dart-properties">Getting and Setting Properties</a></span></dt><dt
     ><span class="sect2"><a href="ch05.html#ch05-client-dart-add-elements">Adding DO
     M Elements</a></span></dt><dt><span class="sect2"><a href="ch05.html#ch05-client
     -dart-json">Encoding and Decoding Messages</a></span></dt><dt><span class="sect2
     "><a href="ch05.html#ch05-client-dart-web-sockets">Communicating with WebSockets
     </a></span></dt></dl></dd><dt><span class="sect1"><a href="ch05.html#ch05-server
     ">The Server's Code</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch05
     .html#ch05-server-static">Serving Static Files</a></span></dt><dt><span class="s
     ect2"><a href="ch05.html#ch05-server-web-socket">Managing WebSocket Connections<
     /a></span></dt><dt><span class="sect2"><a href="ch05.html#ch05-server-web-apis">
     Using Web APIs</a></span></dt><dt><span class="sect2"><a href="ch05.html#ch05-se
     rver-library">Implementing a Library</a></span></dt><dt><span class="sect2"><a h
     ref="ch05.html#ch05-server-logging">Logging Messages</a></span></dt></dl></dd><d
     t><span class="sect1"><a href="ch05.html#ch05-what-next">What Next?</a></span></
     dt></dl></div><p>This chapter points out some of the useful and fun features of 
     the | 
|    9   Dart language and libraries that are used in Dartiverse Search, a |    9   Dart language and libraries that are used in Dartiverse Search, a | 
|   10   client-server app. As <a class="xref" href="ch05.html#DartiverseScreenshot" ti
     tle="Figure 5.1. The client app UI">Figure 5.1, “The client app UI”</a> shows, |   10   client-server app. As <a class="xref" href="ch05.html#DartiverseScreenshot" ti
     tle="Figure 5.1. The client app UI">Figure 5.1, “The client app UI”</a> shows, | 
|   11   Dartiverse Search looks for a user-entered string in GitHub and |   11   Dartiverse Search looks for a user-entered string in GitHub and | 
|   12   StackOverflow. The app is asynchronous, adding results as they're found, so |   12   StackOverflow. The app is asynchronous, adding results as they're found, so | 
|   13   the UI is always responsive.</p><div class="figure"><a name="DartiverseScreens
     hot"></a><p class="title"><b>Figure 5.1. The client app UI</b></p><div class="fi
     gure-contents"><div class="mediaobject"><table border="0" summary="manufactured 
     viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="NaN"><tr><
     td><img src="figs/web/daur_0501.png" width="NaN" alt="The client app UI"></td></
     tr></table></div></div></div><br class="figure-break"><div class="sect1"><div cl
     ass="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ch05-ho
     w-to-run"></a>How to Run Dartiverse Search</h2></div></div></div><p>You can use 
     Dart Editor to get and run Dartiverse Search.</p><div class="orderedlist"><ol cl
     ass="orderedlist" type="1"><li class="listitem"><p>In Dart Editor, go to the Wel
     come page. (If you don't see it, |   13   the UI is always responsive.</p><div class="figure"><a name="DartiverseScreens
     hot"></a><p class="title"><b>Figure 5.1. The client app UI</b></p><div class="fi
     gure-contents"><div class="mediaobject"><table border="0" summary="manufactured 
     viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="NaN"><tr><
     td><img src="figs/web/daur_0501.png" width="NaN" alt="The client app UI"></td></
     tr></table></div></div></div><br class="figure-break"><div class="sect1"><div cl
     ass="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ch05-ho
     w-to-run"></a>How to Run Dartiverse Search</h2></div></div></div><p>You can use 
     Dart Editor to get and run Dartiverse Search.</p><div class="orderedlist"><ol cl
     ass="orderedlist" type="1"><li class="listitem"><p>In Dart Editor, go to the Wel
     come page. (If you don't see it, | 
|   14         choose <span class="bold"><strong>Tools > Welcome |   14         choose <span class="bold"><strong>Tools > Welcome | 
|   15         Page</strong></span>.)</p></li><li class="listitem"><p>In the demo secti
     on, click <span class="bold"><strong>Dartiverse |   15         Page</strong></span>.)</p></li><li class="listitem"><p>In the demo secti
     on, click <span class="bold"><strong>Dartiverse | 
|   16         Search</strong></span> to create a copy of the dartiverse_search |   16         Search</strong></span> to create a copy of the dartiverse_search | 
|   17         package.<a href="#ftn.idm244197742832" class="footnote" name="idm2441977
     42832"><sup class="footnote">[2]</sup></a></p></li><li class="listitem"><p>Use <
     span class="bold"><strong>Tools > Pub Build</strong></span> to |   17         package.<a href="#ftn.idm121378695232" class="footnote" name="idm1213786
     95232"><sup class="footnote">[2]</sup></a></p></li><li class="listitem"><p>Use <
     span class="bold"><strong>Tools > Pub Build</strong></span> to | 
|   18         build the package.</p></li><li class="listitem"><p>Select <code class="l
     iteral">bin/server.dart</code> and click the |   18         build the package.</p></li><li class="listitem"><p>Select <code class="l
     iteral">bin/server.dart</code> and click the | 
|   19         <span class="bold"><strong>Run</strong></span> button. You should see a 
     message |   19         <span class="bold"><strong>Run</strong></span> button. You should see a 
     message | 
|   20         that the search server is running at http://127.0.0.1:9223/.</p></li><li
      class="listitem"><p>Click that URL or enter it into any modern browser. The sea
     rch |   20         that the search server is running at http://127.0.0.1:9223/.</p></li><li
      class="listitem"><p>Click that URL or enter it into any modern browser. The sea
     rch | 
|   21         client UI should appear in your default browser.</p></li></ol></div></di
     v><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="c
     lear: both"><a name="ch05-how-it-works"></a>How Dartiverse Search Works</h2></di
     v></div></div><p>The search server is an HTTP server that provides a WebSocket |   21         client UI should appear in your default browser.</p></li></ol></div></di
     v><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="c
     lear: both"><a name="ch05-how-it-works"></a>How Dartiverse Search Works</h2></di
     v></div></div><p>The search server is an HTTP server that provides a WebSocket | 
|   22     interface. The search client uses that WebSocket interface as a |   22     interface. The search client uses that WebSocket interface as a | 
|   23     bi-directional communication channel with the server. The client sends |   23     bi-directional communication channel with the server. The client sends | 
|   24     search requests to the server over the WebSocket, and the server replies |   24     search requests to the server over the WebSocket, and the server replies | 
|   25     with any results and then a final, "search done" message.</p><p>The server s
     tarts things off by binding to localhost, port 9223, and |   25     with any results and then a final, "search done" message.</p><p>The server s
     tarts things off by binding to localhost, port 9223, and | 
|   26     listening for requests to the WebSocket: |   26     listening for requests to the WebSocket: | 
|   27     <code class="literal">ws://127.0.0.1:9223/ws</code>. Search clients can conn
     ect |   27     <code class="literal">ws://127.0.0.1:9223/ws</code>. Search clients can conn
     ect | 
| (...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  353       warnings to appear, you can set the level to |  353       warnings to appear, you can set the level to | 
|  354       <code class="literal">Level.WARNING</code>.</p><p>For a list of all the le
     vels and what they mean, see the <a class="ulink" href="https://api.dartlang.org
     /logging/Level.html" target="_top">Level API |  354       <code class="literal">Level.WARNING</code>.</p><p>For a list of all the le
     vels and what they mean, see the <a class="ulink" href="https://api.dartlang.org
     /logging/Level.html" target="_top">Level API | 
|  355       documentation.</a> See the <a class="ulink" href="https://api.dartlang.org
     /logging/Logger.html" target="_top">Logger API |  355       documentation.</a> See the <a class="ulink" href="https://api.dartlang.org
     /logging/Logger.html" target="_top">Logger API | 
|  356       documentation</a> for a list of methods that log messages.</p></div></div>
     <div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="cle
     ar: both"><a name="ch05-what-next"></a>What Next?</h2></div></div></div><p>You’v
     e seen how the Dartiverse Search sample uses both server-side |  356       documentation</a> for a list of methods that log messages.</p></div></div>
     <div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="cle
     ar: both"><a name="ch05-what-next"></a>What Next?</h2></div></div></div><p>You’v
     e seen how the Dartiverse Search sample uses both server-side | 
|  357     and client-side Dart code to implement a web app. It makes use of both |  357     and client-side Dart code to implement a web app. It makes use of both | 
|  358     built-in libraries and libraries from packages published on |  358     built-in libraries and libraries from packages published on | 
|  359     pub.dartlang.org.</p><p>If you'd like to continue exploring Dartiverse Searc
     h, consider |  359     pub.dartlang.org.</p><p>If you'd like to continue exploring Dartiverse Searc
     h, consider | 
|  360     improving its user interface or adding another search engine. If you'd |  360     improving its user interface or adding another search engine. If you'd | 
|  361     like to look at other samples, you can find them in Dart Editor and at |  361     like to look at other samples, you can find them in Dart Editor and at | 
|  362     <a class="ulink" href="http://dartlang.org/samples" target="_top">http://dar
     tlang.org/samples</a>.</p><p>Our website has lots more information, including gu
     ides and |  362     <a class="ulink" href="http://dartlang.org/samples" target="_top">http://dar
     tlang.org/samples</a>.</p><p>Our website has lots more information, including gu
     ides and | 
|  363     tutorials. It's all at <a class="ulink" href="http://dartlang.org" target="_
     top">http://dartlang.org</a>.</p></div><div class="footnotes"><br><hr style="wid
     th:100; text-align:left;margin-left: 0"><div id="ftn.idm244197742832" class="foo
     tnote"><p><a href="#idm244197742832" class="para"><sup class="para">[2] </sup></
     a>If you aren’t using Dart Editor, you can find the Dartiverse |  363     tutorials. It's all at <a class="ulink" href="http://dartlang.org" target="_
     top">http://dartlang.org</a>.</p></div><div class="footnotes"><br><hr style="wid
     th:100; text-align:left;margin-left: 0"><div id="ftn.idm121378695232" class="foo
     tnote"><p><a href="#idm121378695232" class="para"><sup class="para">[2] </sup></
     a>If you aren’t using Dart Editor, you can find the Dartiverse | 
|  364             Search source code in the <a class="ulink" href="http://code.google.
     com/p/dart" target="_top">Dart project</a> under |  364             Search source code in the <a class="ulink" href="http://code.google.
     com/p/dart" target="_top">Dart project</a> under | 
|  365             <code class="filename">samples/dartiverse_search</code>.</p></div></
     div></div><div class="navfooter"><hr><table width="100%" summary="Navigation foo
     ter"><tr><td width="40%" align="left"><a accesskey="p" href="ch04-summary.html">
     Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"
     > <a accesskey="n" href="colophon.html">Next</a></td></tr><tr><td width="40%" al
     ign="left" valign="top">Summary </td><td width="20%" align="center"><a accesskey
     ="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 
     Colophon</td></tr></table></div> |  365             <code class="filename">samples/dartiverse_search</code>.</p></div></
     div></div><div class="navfooter"><hr><table width="100%" summary="Navigation foo
     ter"><tr><td width="40%" align="left"><a accesskey="p" href="ch04-summary.html">
     Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"
     > <a accesskey="n" href="colophon.html">Next</a></td></tr><tr><td width="40%" al
     ign="left" valign="top">Summary </td><td width="20%" align="center"><a accesskey
     ="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 
     Colophon</td></tr></table></div> | 
| OLD | NEW |