UNPKG

learnyounode

Version:

Learn You The Node.js For Much Win! An intro to Node.js via a set of self-guided workshops.

59 lines (39 loc) 2.39 kB
Skriv en **klokkeserver** som kommuniserer ved hjelp av **TCP**. Du skal lytte på TCP tilkoblinger på porten som vil bli gitt som første argument til ditt program. For hver tilkobling skal du returnere datoen og klokka på formatet: ``` "YYYY-MM-DD hh:mm" ``` og avslutte vær linje med et **linjeskift**. Måned, dag, time og minutt skal inneholde 2 heltall. For eksempel: ``` "2013-07-06 17:42" ``` ---------------------------------------------------------------------- ## HINT I denne oppgaven skal vi opprette en enkel TCP server. Siden det ikke er noe HTTP i bildet, så må vi benytte `net` modulen fra Node core. `net` modulen inneholder alle basis nettverksfunksjonene. I `net` modulen finner man metoden `net.createServer()`. `net.createServer()` tar i mot en callback funksjon som vil bli kalt en gang per tilkobling serveren mottar. Callback funksjonen har denne signaturen: ```js function callback (socket) { /* ... */ } ``` `net.createServer()` returnerer et server objekt. På dette server objektet må du kalle `server.listen(portnummer)`for at serveren skal starte å lytte på en gitt port. En typisk Node TCP server vil se slik ut: ```js const net = require('net') const server = net.createServer(function (socket) { // socket håndtering }) server.listen(8000) ``` Husk at du må benytte portnummeret som blir gitt som første kommandolinje argument. Et `socket` objekt vil inneholde masse metainformasjon om vær tilkobling. Dette objektet er av typen Node duplex Stream. En duplex Stream kan både leses fra og skrives til. I denne oppgaven må du gjøre begge deler og lukke tilkoblingen når du er ferdig. Benytt `socket.write(data)` for å skrive og `socket.end()` for å lukke socketen (tilkobligen). Du kan forenkle dette litt ved å skrive `socket.end(data)`. Dokumentasjonen til `net` finner du her: {rootdir:/docs-nodejs/net.html} Etter å ha opprettet et `new Date()` object, vil disse funksjonene være til hjelp får å få riktig format: ```js date.getFullYear() date.getMonth() // starter på 0 date.getDate() // returnerer dagen i måneden date.getHours() date.getMinutes() ``` Hvis du vil ta det et steg lenger kan du benytte `strftime` modulen fra npm. `strftime(fmt, date)` funksjonen tar et dato format på samme måte som unix sin `date` kommando. Du kan lese mer om strftime på https://github.com/samsonjs/strftime