UNPKG

node-http-server

Version:

A very simple and fast http server for node, bash, and spawnable from C, Python etc. It is lightweight and great for embedded solutions as well as everyday development or public facing apps.

188 lines (141 loc) 13 kB
<!DOCTYPE html> <html> <head> <title>basicTemplate</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"> <link rel="stylesheet" media="all" href="../../assets/file_1.css"/> <link rel="stylesheet" media="all" href="../../assets/file_5.css"/> <link rel="stylesheet" media="all" href="../../assets/32px.png"/> <link rel="stylesheet" media="all" href="../../assets/40px.png"/> <link rel="stylesheet" media="all" href="../../assets/throbber.gif"/> <link rel="stylesheet" media="all" href="../../assets/file_7.css"/> <link rel="stylesheet" media="all" href="../../assets/file_8.css"/> <script src="../../assets/file_2.js" type="text/javascript"></script> <script src="../../assets/file_3.js" type="text/javascript"></script> <script src="../../assets/file_4.js" type="text/javascript"></script> <script src="../../assets/file_6.js" type="text/javascript"></script> <script type="application/json" id="jsTreeJSON"> [{"id":"./example/basic/https-advancedApp.js","text":"https-advancedApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../basic/https-advancedApp.js.html"},"state":{"selected":false}},{"id":".","text":".","icon":"jstree-folder","parent":"#","a_attr":{"href":"../.."},"state":{"opened":true}},{"id":"./example","text":"example","icon":"jstree-folder","parent":".","a_attr":{"href":".."},"state":{"opened":true}},{"id":"./example/readme.md","text":"readme.md","icon":"jstree-file","parent":"./example","a_attr":{"href":"../readme.md.html"},"state":{"selected":false}},{"id":"./example/advanced","text":"advanced","icon":"jstree-folder","parent":"./example","a_attr":{"href":"."},"state":{"opened":true}},{"id":"./example/advanced/basicTemplate.js","text":"basicTemplate.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"basicTemplate.js.html"},"state":{"selected":true}},{"id":"./example/advanced/https-ONLY-basicTemplate.js","text":"https-ONLY-basicTemplate.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"https-ONLY-basicTemplate.js.html"},"state":{"selected":false}},{"id":"./example/advanced/https-basicTemplate.js","text":"https-basicTemplate.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"https-basicTemplate.js.html"},"state":{"selected":false}},{"id":"./example/advanced/https-randomCSS.js","text":"https-randomCSS.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"https-randomCSS.js.html"},"state":{"selected":false}},{"id":"./example/advanced/https-requestBenchmark.js","text":"https-requestBenchmark.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"https-requestBenchmark.js.html"},"state":{"selected":false}},{"id":"./example/advanced/randomCSS.js","text":"randomCSS.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"randomCSS.js.html"},"state":{"selected":false}},{"id":"./example/advanced/requestBenchmark.js","text":"requestBenchmark.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"requestBenchmark.js.html"},"state":{"selected":false}},{"id":"./example/basic","text":"basic","icon":"jstree-folder","parent":"./example","a_attr":{"href":"../basic"},"state":{"opened":false}},{"id":"./example/basic/advancedApp.js","text":"advancedApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../basic/advancedApp.js.html"},"state":{"selected":false}},{"id":"./example/basic/basicApp.js","text":"basicApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../basic/basicApp.js.html"},"state":{"selected":false}},{"id":"./example/basic/basicLogging.js","text":"basicLogging.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../basic/basicLogging.js.html"},"state":{"selected":false}},{"id":"./example/basic/cluster-basicApp.js","text":"cluster-basicApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../basic/cluster-basicApp.js.html"},"state":{"selected":false}},{"id":"./example/basic/https-ONLY-basicApp.js","text":"https-ONLY-basicApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../basic/https-ONLY-basicApp.js.html"},"state":{"selected":false}},{"id":"./README.md","text":"README.md","icon":"jstree-file","parent":".","a_attr":{"href":"../../README.md.html"},"state":{"selected":false}},{"id":"./example/basic/https-basicApp.js","text":"https-basicApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../basic/https-basicApp.js.html"},"state":{"selected":false}},{"id":"./example/basic/https-basicLogging.js","text":"https-basicLogging.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../basic/https-basicLogging.js.html"},"state":{"selected":false}},{"id":"./example/basic/https-multipleDomains.js","text":"https-multipleDomains.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../basic/https-multipleDomains.js.html"},"state":{"selected":false}},{"id":"./example/basic/https-verboseApp.js","text":"https-verboseApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../basic/https-verboseApp.js.html"},"state":{"selected":false}},{"id":"./example/basic/multipleDomains.js","text":"multipleDomains.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../basic/multipleDomains.js.html"},"state":{"selected":false}},{"id":"./example/basic/verboseApp.js","text":"verboseApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../basic/verboseApp.js.html"},"state":{"selected":false}},{"id":"./example/proxy","text":"proxy","icon":"jstree-folder","parent":"./example","a_attr":{"href":"../proxy"},"state":{"opened":false}},{"id":"./example/proxy/basic.js","text":"basic.js","icon":"jstree-file","parent":"./example/proxy","a_attr":{"href":"../proxy/basic.js.html"},"state":{"selected":false}},{"id":"./example/proxy/https-and-http-basic.js","text":"https-and-http-basic.js","icon":"jstree-file","parent":"./example/proxy","a_attr":{"href":"../proxy/https-and-http-basic.js.html"},"state":{"selected":false}},{"id":"./example/proxy/https-and-http-google-proxy.js","text":"https-and-http-google-proxy.js","icon":"jstree-file","parent":"./example/proxy","a_attr":{"href":"../proxy/https-and-http-google-proxy.js.html"},"state":{"selected":false}},{"id":"./server","text":"server","icon":"jstree-folder","parent":".","a_attr":{"href":"../../server"},"state":{"opened":false}},{"id":"./server/Config.js","text":"Config.js","icon":"jstree-file","parent":"./server","a_attr":{"href":"../../server/Config.js.html"},"state":{"selected":false}},{"id":"./server/Server.js","text":"Server.js","icon":"jstree-file","parent":"./server","a_attr":{"href":"../../server/Server.js.html"},"state":{"selected":false}},{"id":"./bin","text":"bin","icon":"jstree-folder","parent":".","a_attr":{"href":"../../bin"},"state":{"opened":false}},{"id":"./bin/nhs.js","text":"nhs.js","icon":"jstree-file","parent":"./bin","a_attr":{"href":"../../bin/nhs.js.html"},"state":{"selected":false}},{"id":"./local-certs","text":"local-certs","icon":"jstree-folder","parent":".","a_attr":{"href":"../../local-certs"},"state":{"opened":false}},{"id":"./local-certs/readme.md","text":"readme.md","icon":"jstree-file","parent":"./local-certs","a_attr":{"href":"../../local-certs/readme.md.html"},"state":{"selected":false}}] </script> </head> <body class="markdown-body"> <h1> basicTemplate </h1> <div class="subHeading"> ./example/advanced/basicTemplate.js </div> <button type="button" class="navigatorToggle">&#9776; files...</button> <nav class="navigationTree minimized"> <input type="text" id="jsTreeSearch" placeholder="search..."/> <div></div> </nav> <section> <ul class="sectionDetails "> <li id="section-1"> <div class="annotation"> </div><div class="content"> <div class="highlight"><pre><span class="hljs-keyword">const</span> os = <span class="hljs-built_in">require</span>( <span class="hljs-string">'os'</span> );</pre></div> </div> </li> <li id="section-2"> <div class="annotation"> <p>import the <code>node-http-server</code> module <code>const server=require(‘node-http-server’);</code></p> </div><div class="content"> <div class="highlight"><pre><span class="hljs-keyword">const</span> server=<span class="hljs-built_in">require</span>(<span class="hljs-string">'../../server/Server.js'</span>); <span class="hljs-keyword">const</span> config=<span class="hljs-keyword">new</span> server.Config;</pre></div> </div> </li> <li id="section-3"> <div class="annotation"> <p>set configs</p> </div><div class="content"> <div class="highlight"><pre>config.verbose=<span class="hljs-literal">true</span>; config.port=<span class="hljs-number">8000</span>; config.root=__dirname+<span class="hljs-string">'/appRoot/'</span>;</pre></div> </div> </li> <li id="section-4"> <div class="annotation"> <p>set listener to process body template</p> </div><div class="content"> <div class="highlight"><pre>server.beforeServe=beforeServe; <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">beforeServe</span>(<span class="hljs-params">request,response,body,encoding</span>)</span>{</pre></div> </div> </li> <li id="section-5"> <div class="annotation"> <p>only parse the /index.html request</p> </div><div class="content"> <div class="highlight"><pre> <span class="hljs-keyword">if</span>(request.url!=<span class="hljs-string">'/index.html'</span>){ <span class="hljs-keyword">return</span>; }</pre></div> </div> </li> <li id="section-6"> <div class="annotation"> <p>dynamically detect available interfaces</p> </div><div class="content"> <div class="highlight"><pre> <span class="hljs-keyword">var</span> networkInterfaces = os.networkInterfaces(); <span class="hljs-keyword">var</span> serverIPs=<span class="hljs-string">''</span>; <span class="hljs-keyword">var</span> interfaceKeys=<span class="hljs-built_in">Object</span>.keys(networkInterfaces);</pre></div> </div> </li> <li id="section-7"> <div class="annotation"> <p>generate list items with the network interfaces</p> </div><div class="content"> <div class="highlight"><pre> <span class="hljs-keyword">for</span>(<span class="hljs-keyword">var</span> i <span class="hljs-keyword">in</span> interfaceKeys){ serverIPs+=<span class="hljs-string">'&lt;li&gt;&lt;strong&gt;'</span>+interfaceKeys[i]+<span class="hljs-string">' : &lt;/strong&gt;&lt;br&gt;'</span>; <span class="hljs-keyword">var</span> interface=networkInterfaces[ interfaceKeys[i] ]; <span class="hljs-keyword">for</span>(<span class="hljs-keyword">var</span> j <span class="hljs-keyword">in</span> interface){ <span class="hljs-keyword">var</span> fam=interface[j].family; <span class="hljs-keyword">var</span> address=interface[j].address; serverIPs+=fam+<span class="hljs-string">' -&gt; '</span>+address+<span class="hljs-string">'&lt;br&gt;'</span>; } serverIPs+=<span class="hljs-string">'&lt;/li&gt;'</span>; }</pre></div> </div> </li> <li id="section-8"> <div class="annotation"> <p>replace the {{some-content}} var in the body with the list created above</p> </div><div class="content"> <div class="highlight"><pre> body.value=body.value.replace(<span class="hljs-string">'{{some-content}}'</span>,serverIPs); }</pre></div> </div> </li> <li id="section-9"> <div class="annotation"> <p>start the server</p> </div><div class="content"> <div class="highlight"><pre>server.deploy(config);</pre></div> </div> </li> </ul> </section> </body> </html>