Setting up Node.js server (HTTP server): installing on Windows; components - required modules, Create Server (http.createServer()), Request and response

पाँच lines एक web server बनाती हैं: http module require कीजिए, req और res receive करने वाले function के साथ createServer कीजिए, res से answer दीजिए, और एक port पर listen कीजिए: localhost:8080 live है।

11 min read · 10 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

एक Live Server के लिए पाँच Lines

Web servers पहले infrastructure जैसे feel होते थे: कुछ ऐसा जो server rooms में serious लोगों द्वारा installed हो।

आज आप एक 5 lines में लिखेंगे, इसे node app.js से चलाएँगे, और अपने ही browser में एक ऐसे address पर visit करेंगे जो कभी आपकी machine नहीं छोड़ता। FestConnect का back end, वह box जिसे Unit 4 सिर्फ़ draw करती थी, पहली बार boot होता है।

Recipe को 3 components चाहिए: http module, एक callback function, और एक port।

Theory

Components, नाम के साथ

  • http module: Node HTTP बोलने के लिए एक built-in library ship करता है; require('http') इसे load करता है (modules को अगला पूरा lesson मिलता है)
  • createServer(callback): server बनाता है; callback आपका counter clerk है: यह हर incoming request के लिए एक बार चलता है
  • req और res: callback के 2 arguments: req describe करता है visitor ने क्या पूछा (उनका URL, method, headers); res वह reply है जो आप assemble और send करते हैं
  • listen(port): एक numbered door पर shop खोलता है: server.listen(8080)

Practical

app.js: FestConnect का पहला Server

const http = require('http');          // 1: load the http module

const server = http.createServer(function (req, res) {
    // this function runs ONCE PER REQUEST
    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.write('<h1>FestConnect Live</h1>');
    res.write('<p>Seats left for Garba Night: 40</p>');
    res.end();                          // finish and send the reply
});

server.listen(8080);                    // open door number 8080
console.log('Server running at http://localhost:8080');

This example runs in Gri-Learn on the web, where you can edit it and see the output.

Follow along

File से पहली Visit तक

  1. Listing को app.js की तरह Save कीजिए कोई भी folder; plain text; नाम convention है, law नहीं।
  2. चलाइए: node app.js Command prompt console.log line print करता है और फिर... कुछ नहीं। वह stillness मतलब server ALIVE है, wait कर रहा है। Ctrl+C इसे stop करता है।
  3. Browser में http://localhost:8080 Visit कीजिए localhost = यही machine; 8080 = वह door जो आपने खोला। Heading appear होती है: आपका पहला self-served page।
  4. कुछ बार Refresh कीजिए हर refresh एक fresh request है; आपका callback हर बार फिर चलता है।

Theory

req और res: एक Conversation के दो Ends

हर request आपके callback को 2 objects के साथ जगाता है:

req (request): visitor ने जो भी भेजा वह सब: अभी सबसे useful है req.url, वह path जो उन्होंने पूछा ("/", "/schedule", "/?event=garba": lesson 24 इसे पढ़ता है)।

res (response): आपका reply, 3 moves में assemble हुआ: writeHead (status + headers, पहले), write (body content, repeatable), end (seal करके send कीजिए: इसके बिना browser हमेशा wait करता है)।

नोटिस कीजिए आप और किससे मिले Unit 4 में: आपका AJAX code इन्हीं exact objects के OTHER side पर था: xhr ने जो भेजा वह req बन गया; res जो भेजता है वह responseText बन जाता है।

Quiz

http.createServer(function (req, res) {...}) में, वह function असल में कब execute होता है?

  1. एक बार, जब node app.js server start करता है
  2. हर EVERY incoming request के लिए एक बार: हर visit और refresh इसे फिर चलाता है
  3. Continuously, एक loop में, जब तक server चल रहा है
  4. सिर्फ़ जब कहीं res.end() call होता है
Show the answer

हर EVERY incoming request के लिए एक बार: हर visit और refresh इसे फिर चलाता है

Callback counter clerk है: यह एक request आने तक सोता है, इसे serve करता है, और फिर सोता है: 10 visitors का मतलब है 10 executions, और ऊपर steps में हर browser refresh ने इसे फिर से चलाया। Option A listen()'s की door खोलने वाली one-time role describe करता है, एक अलग moment। Option C उस single thread को burn कर देगा जिसे event loop protect करता है: Node आपका code सिर्फ़ events के response में चलाता है। Option D cause और effect reverse करता है: res.end() यह है कैसे हर execution अपनी reply FINISH करता है, वह नहीं जो एक को trigger करता है।

Think first

Spinner जो कभी नहीं रुकता

एक classmate के server में writeHead और write हैं पर वह res.end() भूल गया। वह localhost:8080 visit करता है। Tap करने से पहले: उसका browser exactly क्या करता है, और यह bug HTTP responses के काम करने के तरीके से कैसे follow करता है?

Show the answer

Tab हमेशा के लिए spin करता है: content शायद appear भी हो जाए (write ने इसे chunks में भेजा), पर browser wait करता रहता है क्योंकि कभी किसी ने नहीं कहा REPLY COMPLETE है। res.end() वही signal है: HTTP responses open streams हैं जब तक explicitly finish न हों, एक design जो बड़े pages को pieces में flow करने देता है (Node का no-buffering feature, पिछले lesson से)। कोई error नहीं, कोई crash नहीं: बस एक हमेशा-loading tab, जो forgotten end() calls को Node का सबसे recognisable beginner bugs में से एक बनाता है। हर response path को एक end() तक पहुँचना चाहिए।

Watch out

Setup Snags

Port पहले से इस्तेमाल में है: listen पर EADDRINUSE का मतलब है कोई दूसरा program (अक्सर आपका ही forgotten server दूसरी window में) 8080 का owner है: इसे stop कीजिए या 8081 चुनिए।

Edits कुछ नहीं करती: Node ने आपकी file start पर load की थी; changes को restart चाहिए (Ctrl+C, फिर node app.js)।

localhost सिर्फ़ आपका है: classmates आपका localhost:8080 visit नहीं कर सकते; यह कभी आपकी machine नहीं छोड़ता: deployment एक बाद के course की story है।

Theory

Unit 4 से Circle बंद होता है

Listing की HTML को एक JSON string और Content-Type application/json से replace कीजिए, और यह server exactly उन xhr.open("GET", ...) calls को answer कर सकता है जो आपके AJAX pages करते हैं: अब आपके पास wire के दोनों ends हैं, एक language में। दो refinements बाकी हैं: code को modules में organise करना (अगला), और visitor ने actually क्या पूछा वह query string से पढ़ना (उसके बाद): फिर FestConnect का server real काम करता है।

Summary

Key takeaways

  • Components: http module (require('http')), एक callback के साथ createServer, req + res, और listen(port)।
  • Callback हर incoming request के लिए एक बार चलता है: event loop visitors को serve करते हुए।
  • req = उन्होंने क्या पूछा (req.url); res = आपका reply: writeHead, फिर write, फिर end।
  • res.end() seal करके send करता है; इसे भूलना browser को हमेशा के लिए spinning छोड़ देता है।
  • server.listen(8080) door खोलता है; http://localhost:8080 visit कीजिए (यह machine, वह port)।
  • Code edits को server restart चाहिए; port clashes का मतलब है कोई दूसरा server वह door hold कर रहा है।
  • Memory hook: require, create, listen: head, body, end।

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Node.js

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Setting up Node.js server (HTTP server): installing on Windows; components - required modules, Create Server (http.createServer()), Request and response · Web Designing-2 (option A) · Gri-Learn