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.

161 lines (123 loc) 12.5 kB
<!DOCTYPE html> <html> <head> <title>https-requestBenchmark</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":false}},{"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":true}},{"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> https-requestBenchmark </h1> <div class="subHeading"> ./example/advanced/https-requestBenchmark.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; config.verbose=<span class="hljs-literal">false</span>; config.port=<span class="hljs-number">8000</span>; config.root=__dirname+<span class="hljs-string">'/appRoot/'</span>; config.server.noCache=<span class="hljs-literal">true</span>; config.https.privateKey = <span class="hljs-string">`<span class="hljs-subst">${__dirname}</span>/../../local-certs/private/server.key`</span>; config.https.certificate= <span class="hljs-string">`<span class="hljs-subst">${__dirname}</span>/../../local-certs/server.pub`</span>; config.https.port = <span class="hljs-number">4433</span>; server.onRequest=startTimer; server.beforeServe=beforeServe; server.afterServe=stopTimer; <span class="hljs-keyword">var</span> benchmarks=[]; <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">startTimer</span>(<span class="hljs-params">request,response</span>)</span>{ <span class="hljs-keyword">var</span> index=benchmarks.length; benchmarks[index]={ <span class="hljs-attr">startTime</span>:<span class="hljs-keyword">new</span> <span class="hljs-built_in">Date</span>().getMilliseconds(), <span class="hljs-attr">file</span>:request.url } request.myBenchmarkIndex=index; } <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">stopTimer</span>(<span class="hljs-params">request</span>)</span>{ <span class="hljs-keyword">var</span> index=benchmarks.length; benchmarks[request.myBenchmarkIndex].endTime=<span class="hljs-keyword">new</span> <span class="hljs-built_in">Date</span>().getMilliseconds(); } <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-3"> <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-4"> <div class="annotation"> <p>dynamically detect available interfaces</p> </div><div class="content"> <div class="highlight"><pre> <span class="hljs-keyword">var</span> content=<span class="hljs-string">'&lt;li&gt;refresh to get more benchmark times&lt;/li&gt;&lt;li&gt;'</span>; <span class="hljs-keyword">for</span>(<span class="hljs-keyword">var</span> i <span class="hljs-keyword">in</span> benchmarks){ <span class="hljs-keyword">var</span> benchmark=benchmarks[i]; <span class="hljs-keyword">if</span>(!benchmark.endTime){ <span class="hljs-keyword">continue</span>; } content+=<span class="hljs-string">'&lt;li&gt;'</span>+benchmark.file+<span class="hljs-string">' : &lt;strong&gt;'</span>+(benchmark.endTime-benchmark.startTime)+<span class="hljs-string">'ms&lt;/strong&gt;&lt;/li&gt;'</span>; } body.value=body.value.replace(<span class="hljs-string">'{{some-content}}'</span>,content); } server.deploy(config);</pre></div> </div> </li> </ul> </section> </body> </html>