Verkkosovelluskehitys-opintojakso
Tälle sivulle kerätään kurssin aikana tulleita aiheita
Kolme mielestäni tärkeää protokollaa
TCP-protokolla
Transmission control protocol
- TCP tarjoaa luotettavan, järjestetyn ja virhetarkistetut datan liikuttamisen järjestelmien välillä
- Järjestyksen ja pakettien uudelleen lähettämisen mahdollistamiseksi TCP:hen on kehitetty vuonvalvonta- ja ruuhkanhallintamekanismeja
Yhteyden vaiheet
- Muodostamisessa käytetään kolmitiekättelyä. Tässä kättelyssä client lähettää ensin SYN-paketin. SYN-paketin saatuaan vastaanottanut laite vastaa lähettäjälle SYN/ACK-paketilla kohdelaitteelle.
- Tiedonsiirrossa ja sen aikana käytetään erinäisiä mekanismeja luotettavuuden parantamiseksi. Näihin lukeutuu ainakin sekvenssinumerointi, tarkistussummat, ajastimet ja tunnistimet.
- Yhteys päätetään joko nelitiekättelyllä tai kolmitiekättelyllä. Nelitiekättelyssä molemmat osapuolet lähettävät FIN-paketin ja tähän vastataan ACK-paketilla. Kolmitiekättelyssä vain toinen osapuoli lähettää FIN-paketin ja tähän vastataan FIN/ACK-paketilla.
TCP:n laajuus
- TCP-yhteyttä käytetään pohjana ainakin seuraavissa protokollissa:
- HTTP
- Telnet
- SSH
- FTP
- WebSocket
- TCP toimii näissä protokollissa yleensä tiedonsiirtorajapintana
- WebSocket protokolla tarjoaa 2-suuntaisen yhteyden yhden TCP-yhteyden ylitse.
- TCP:n käyttö vähentää huomattavasti verkkoliikenteen tarvetta ja viivettä.
- Tämä saavutetaan sillä, että yhteys pidetään jatkuvasti avoimena ja tarvitaan vain yksi TCP-yhteys, kun taas esim. HTTP:ssä tarvitaan jatkuvia päivittyviä kyselyitä ja yksi avoin yhteys molempiin suuntiin
WebSocketin edut
- Vähemmän kuormaa servereille
- Automaattimen proxyn läpi yhdistäminen
- WebSocket-yhteys alkaa aina HTTP-yhteytenä --> yhteensopiva vanhempien järjestelmien kanssa
Yhdistys
- Yhdistettäessä client lähettää pyynnön vaihtaa protokolla WebSocketiksi
- Onnistuneen kättelyn jälkeen HTTP-yhteys hajotetaan, ja tilalle tulee WebSocket-yhteys saman TCP/IP-yhteyden päälle.
HTTP
Hypertext Transfer Protocol
- Protokolla jota selaimet ja palvelimet käyttävät keskinäiseen tiedonsiirtoon
Normaalikäytäntö
- Ensin otetaan yhteyttä esimerkiksi selaimella palvelimeen TCP:n yli ja lähetetään pyyntö.
- Serveri vastaa pyyntöön lähettämällä jotain takaisin
- Http-yhteys on perusominaisuudeltaan ns. "tilaton", eli se ei tallenna käyttäjän istuntoa tai tietoja millään tavalla
- Tietojen tallentamisessa käytetäänkin evästeitä(cookies)
1) Sovelluksen luonti OpenShiftiin
Sovelluksen luonti onnistui kirjoittamalla seuraavanlainen komento komentokehotteeseen windowsissa:
rhc app create irclokki nodejs-0.10 --from-code https://github.com/jvanhalen/irclokki.git
2) Lisää mysql-cartridge OpenShift-sovellukseen
Mysql-lisäosan lisääminen sovellukseen taas onnistui seuraavanlaisella komennolla:
rhc cartridge add mysql-5.5 -a irclokki
Toinen vaihtoehto mitä myös kokeilin on se, että mysql-moduuli lisätään openshiftin nettisivuilla graafisen käyttöliittymän kautta.
3) Editoi tietokanta kuntoon
Tietokantaa editoidakseni minun täytyi käyttää puttya, koska windowsin komentokehotteella ssh-yhdistyksessä oli ongelmaa. Puttyn käyttöön hyvät ohjeet löytyivät täältä:
https://developers.openshift.com/en/managing-remote-connection.html#download-the-putty-installer
Puttylla yhdistämistä varten tarvittiin sovelluksen ssh-osoite. Osoitteen sai selville kirjoittamalla komentokehoitteeseen rhc app-show irclokki. Puttylla yhdistämisen jälkeen ajoin seuraavat komennot:
mysql
DROP DATABASE if exists irclog;
CREATE DATABASE irclog;
USE irclog;
CREATE TABLE log (id INT PRIMARY KEY AUTO_INCREMENT, timestamp BIGINT, message TEXT);
Seuraavaksi starttaa sovellus omalta koneelta
rhc app-restart irclokki
Omia tuntemuksia tehtävästä
Tehtävä ei ollut varsinaisesti vaikea. Pitkään kuitenkin pähkäilin, miksi oma bottini ei kanavalla näkynyt. Tämä kuitenkin taisi olla enemmän irc:n puolella oleva vika ja yhtäkkiä botti rupesikin pelittämään.
Verkkosovelluskehitys-opintojakso
Tälle sivulle kerätään kurssin aikana tulleita aiheita