ITV0110 node.js töö: erinevus redaktsioonide vahel
| 69. rida: | 69. rida: | ||
Järgnevas on väikesed node näited, mida sobib kasutada praksiga alustamiseks. | Järgnevas on väikesed node näited, mida sobib kasutada praksiga alustamiseks. | ||
Kui oled nodejs oma arvutis käima saanud, käivita programmid käsurealt nii (dijkstras ütle node asemel nodejs ja pordid vali vahemikust 7300-8000): | Kui oled nodejs oma arvutis käima saanud, käivita programmid käsurealt nii (dijkstras ütle node asemel nodejs, lisa lõppu ampersand ja pordid vali vahemikust 7300-8000): | ||
<tt> | <tt> | ||
Redaktsioon: 19. november 2015, kell 09:40
Mis tuleb teha
Sinu ülesandeks on node.js abil ehitada veebisüsteem, mille kaudu saab teises praksis realiseeritud pig'i arvuti vastu mängida nii, et:
- täringuveeretamised teeb server, mitte brauser
- mängu alustades täidad vormivälja oma kasutajanimega (suvaline)
- server salvestab jooksvalt mängu seisundi koos sinu kasutajanimega
- kui sa brauseri kinni paned ja hiljem mõnest teisest arvutist/brauserist sama kasutajanimega serverirakenduse avad, saad jätkata samast kohast, kus mäng enne pooleli jäi.
Põhiasjana on sul vaja salvestada kõik mängu sammud serverisse. Kõige lihtsam on salvestada iga uus mänguseisund serveris seisundite faili uueks reaks, kasutades seejuures json formaati.
node.js sissejuhatust vaata kursuse põhilehel node.js peatükis.
Mis arvutis nodejs-i kasutada? Kõik need kolm varianti on praksi jaoks ok:
- Installeerida node.js oma arvutisse või
- Installeerida node.js arvutiklassi arvutisse (ta on olemas arvutiklassi standardpakettide hulgas, ei ole vaja olla admin) või
- Kasutada nodejs-i dijkstra serveris
node.js Dijkstras
Dijkstras saad käivitada node.js-i nii:
nodejs &
Kus ampersand & ütleb opsüsteemile, et see programm tuleb käima jätta. ehk koos programmiga
nodejs myprog.js &
Vaata, kas nodejs server töötab:
ps
ja kui jah, siis sa näed midagi sellist:
PID TTY TIME CMD 29728 pts/2 00:00:00 bash 30162 pts/2 00:00:00 nodejs 30288 pts/2 00:00:00 ps
nodejs serveri peatamiseks ütle siis
kill 30162
kus 30162 on protsessi number PID, mida ps sulle nodejs kohta ütles.
Portidena, kust datat servereerida, saad kasutada vahemikku 7300-8000. NB! Kui mõni port on hetkel kellegi poolt juba kasutuses, siis teine programm seda samal ajal kasutada ei saa.
Näiteks selline nodejs-i programm töötab serveris ok: pane käima (vbl pead enne pordi muutma) ja ava http://dijkstra.cs.ttu.ee:7500/
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World taneli poolt\n');
}).listen(7500, '193.40.252.80');
console.log('Server running at http://193.40.252.80/');
Nodejs staatiliste failide serveerijana
Kui tahad node.js-i abil lihtsalt veebiserverit teha, et näiteks oma css-i ja javascripti jne faile kuvada, siis kasuta seda näidet.
Näited
Järgnevas on väikesed node näited, mida sobib kasutada praksiga alustamiseks.
Kui oled nodejs oma arvutis käima saanud, käivita programmid käsurealt nii (dijkstras ütle node asemel nodejs, lisa lõppu ampersand ja pordid vali vahemikust 7300-8000):
node myprog.js
ja ava urlilt näiteks nii http://localhost:1337 või nii http://localhost:1337/suva/proov?b=c&d=f123555&a=456
Näited kuvavad debuginfot konsoolile ja näitavad tulemusi brauserisse.
Hello world:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World taneli poolt\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
Failist lugemine:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
var fs = require('fs');
var show="File contents:<p> "
fs.readFile('katse.txt',"utf8", function (err, data) {
if (err) {
console.log(err);
res.write("viga failist lugemisel");
res.end();
return;
}
console.log(data);
show+=data;
res.write(show);
res.end();
});
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
Urli parsimine (katseta http://localhost:1337/suva/proov?b=c&d=f123555&a=456 )
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
var fs = require('fs');
var url = require('url');
fs.readFile('katse.txt',"utf8", function (err, data) {
if (err) {
console.log(err);
res.write("viga failist lugemisel");
res.end();
return;
}
var show="Url:<p> "
var url_parts = url.parse(req.url, true);
show+=JSON.stringify(url_parts);
show+="<p>File contents:<p> "
show+=data;
res.write(show);
res.end();
});
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
Faili kirjutamine:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
var fs = require('fs');
var url = require('url');
fs.readFile('katse.txt',"utf8", function (err, data) {
if (err) {
console.log(err);
res.write("viga failist lugemisel");
res.end();
return;
}
var show="Url:<p> "
var url_parts = url.parse(req.url, true);
show+=JSON.stringify(url_parts);
show+="<p>File contents:<p> "
show+=data;
var store="some text";
fs.writeFile('store.txt',store, function (err) {
if (err) {
console.log(err);
res.write("viga faili kirjutamisel");
res.end();
return;
}
res.write(show);
res.end();
});
});
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
Kirjutatud failist lugemine ja ühe näiteparameeter a kuvamine ( katseta http://localhost:1337/suva/proov?b=c&d=f123555&a=456 )
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
var fs = require('fs');
var url = require('url');
fs.readFile('katse.txt',"utf8", function (err, data) {
if (err) {
console.log(err);
res.write("viga katsefailist lugemisel");
res.end();
return;
}
fs.readFile('store.txt',"utf8", function (err, storedata) {
if (err) {
console.log(err);
res.write("viga storefailist lugemisel");
res.end();
return;
}
var show="Url:<p> "
var url_parts = url.parse(req.url, true);
show+=JSON.stringify(url_parts);
show+="<p>Template file contents:<p> "
show+=data;
show+="<p>Store file contents:<p> "
show+=storedata;
parsed_store=JSON.parse(storedata);
if (parsed_store.a) {
show+="<p>Store file param a value:<p> "
show+=parsed_store.a;
}
var store=JSON.stringify(url_parts.query);
show+="<p>Stored:</p>";
show+=store;
fs.writeFile('store.txt',store, function (err) {
if (err) {
console.log(err);
res.write("viga faili kirjutamisel");
res.end();
return;
}
res.write(show);
res.end();
});
});
});
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');