Mikä on socket http-protokolla? Asynkroninen verkko, tai mitä verkkopistokkeet ovat. Esimerkkejä websocketeista verkossa

Mikä on WebSocket. Kumpi on parempi - Websockets vai AJAX?

5 (100%) 3 ääntä

WebSocket on kaksisuuntainen tiedonsiirtoprotokolla TCP-yhteyden kautta. Eli käyttämällä tätä protokollaa voit lähettää ja vastaanottaa viestin samanaikaisesti. Se mahdollistaa reaaliaikaisen viestien vaihdon selaimen ja palvelimen välillä.

Websocketit eivät ole olleet kokeellisia pitkään aikaan, niitä käytetään selainpeleissä, interaktiiviset järjestelmät, maksujärjestelmä. WebSocketeista on jo tullut osa modernia verkkoa!

Selain on verkkopalvelin. Miten se toimii ja mitä pitää muuttaa?

Verkkokehittäjille on aina ollut ongelma saada selain reagoimaan palvelimella tapahtuviin tapahtumiin. HTTP-protokollassa on joitain puutteita, ja kaikki kehittäjät ovat todennäköisesti kritisoineet sitä. Yksi näistä haitoista on ongelma pysyvä yhteys palvelimen kanssa. HTTP-protokollan käyttöönotto ei sallinut tällaista vuorovaikutusta. Jos esimerkiksi haluamme vastaanottaa tietoja palvelimelta selaimeen, meidän on tehtävä toinen pyyntö palvelimelle, mikä edellyttää sivun lataamista uudelleen. Eli jos avasit sivuston selaimessa, latasit sivun, katselit sitä ja tähän mennessä palvelin on vaihtunut tämä sivu, meidän on ladattava sivu uudelleen saadaksemme muutoksen.

Niitä on melkoisesti suuri määrä tehtäviä, joissa meidän on saavutettava asynkronisuus HTTP-protokollan avulla. Eli jos palvelimeen tulee muutoksia, sinun on saatava nämä muutokset selaimeen ilman uudelleenkäynnistystä. Yksi tällainen esimerkki on chat, jossa ihmiset kommunikoivat ja kun joku lähettää viestejä toiselle, viesti näkyy vastaanottajalle välittömästi ilman sivun uudelleenlatausta. Aikaisemmin tämäntyyppisten sovellusten luominen ei ollut helppoa, palvelimen työntötoimintoja simuloivat tulkinnat olivat erilaisia. Yksi tällainen esimerkki ovat asiakaspohjaiset kehykset, jotka latautuvat uudelleen kerran sekunnissa ja lähettävät pyyntöjä palvelimelle.

Tällä lähestymistavalla on monia haittoja - palvelimelle luodaan erittäin suuri määrä pyyntöjä, sitä on vaikea järjestää oikea rakenne sovellukset. minä olen pääongelma- Tätä teemme emuloidaksemme reaktiota palvelintapahtumaan. Asiakas (selain) vastaanottaa tiedot aina pitkällä viiveellä.

Puhutaanpa nyt AJAXista. Kun XMLHTTPRequest-objekti ilmestyi selaimiin, tilanne parani hieman. SISÄÄN tässä tapauksessa voimme olla vuorovaikutuksessa palvelimen kanssa käyttämällä Long Polling -järjestelmää. Tämän järjestelmän olemus on kuvattu kohdat kohdalta alla:

  • Asiakas (selain) lähettää pyynnön palvelimelle,
  • Yhteys ei sulje ja asiakas odottaa tapahtuman tapahtumista.
  • Tapahtuman tapahtuessa asiakas saa vastauksen pyyntöönsä,
  • Asiakas lähettää välittömästi uuden pyynnön.

Tällä lähestymistavalla saamme asynkronisia pyyntöjä palvelimelle ja vastaukset käsitellään funktioiden avulla soita takaisin. Mutta tällä lähestymistavalla on myös joitain haittoja. Tämän lähestymistavan suurin haitta on, että tässä palvelin ja palvelintapahtumat eivät ole vuorovaikutuksen alullepanija.

Ei kauan sitten ilmestyi uusi protokolla, jolla ei ole yllä lueteltuja haittoja. Uusi teknologia WebSockets on kaksisuuntaisen tiedonsiirtoprotokollan toteutus TCP-yhteyden kautta.

Miksi WebSockets? ws-protokollan hyvät ja huonot puolet

Web Sockets -teknologian avulla meidän on unohdettava tavallinen WWW-maailman vuorovaikutusjärjestelmä. Meidän täytyy tehdä maaleja standardi malli HTTP-protokolla - "pyyntö/vastaus pyyntöön". Web Sockets -teknologian puitteissa selain ja palvelin voivat lähettää ja vastaanottaa tietoja milloin tahansa, eli niistä tulee tasavertaisia ​​osallistujia.

WebSocket muodostaa yhden asiakas-palvelin-yhteyden. WebSocketsin käyttäminen edellyttää molempien osapuolten (asiakkaan ja palvelimen) tukea tätä tekniikkaa. Kaikki uudet selaimet tukevat WS-protokollaa ja palvelinosa on kehittäjän toteuttama. Kun palvelin ja asiakas ovat valmiita "taistelemaan", palvelin ja asiakas voivat lähettää tekstiviestejä Web Socketsin kautta. Tiedonsiirto ja vastaanotto tapahtuu välittömästi, tämä tekniikka luo kaksisuuntaisia ​​viestintäkanavia.

Koska yhteyttä asiakkaaseen ja palvelimeen ei ole suljettu (se pidetään jatkuvasti auki), vältetään tarpeettoman tiedon (HTTP-otsikot) siirto. WebSockets-standardissa ei ole määrärajoituksia avoin yhteys ja pyyntöjen järjestyksen mukaan.

Tällä oppitunnilla opimme, mitä menetelmiä on olemassa asynkronisille pyynnöille palvelimelle, mikä WebSocket on ja mitä etuja sillä on verrattuna AJAXiin ja HTML-kehykset. Seuraavalla oppitunnilla alamme työskennellä WebSocketin kanssa Node.js:ssä, tarkastelemme tätä tekniikkaa toiminnassa yksityiskohtaisemmin ja kirjoitamme keskustelun WebSockets- ja Node.js-sivustoissa. Täysi lista Löydät Node.js oppitunteja.

Websocketit

Palvelintapahtumat, joista on keskusteltu aiemmin, ovat ihanteellinen työkalu, kun haluat vastaanottaa viestisarjan verkkopalvelimelta. Mutta yhteys osoittautuu täysin yksipuoliseksi. Selain ei voi vastata viesteihin tai käydä monimutkaisempaa vuoropuhelua palvelimen kanssa.

Jos rakennat verkkosovellusta, joka vaatii merkittävää kaksisuuntaista viestintää selaimen ja verkkopalvelimen välillä, paras lähestymistapa sen täytäntöönpanoon (turvaamatta Flash-apu) käyttää mahdollisesti XMLHttpRequest-objektia. Tyypistä riippuen luotava sovellus tämä lähestymistapa voi toimia tarpeen mukaan. Mutta tässä on melkoinen määrä mahdollisia ongelmia.

Ensinnäkin, XMLHttpRequest-objekti ei kovin hyvä nopea vaihto useita viestejä (esimerkiksi chatissa). Tällöin puhelua ei voi linkittää toiseen, joten jokaisen Web-sivun uuden pyynnön yhteydessä palvelimen on selvitettävä alusta alkaen, kenelle tämä sivu kuuluu. Siksi koodin monimutkaisuus, joka käsittelee useita aiheeseen liittyviä verkkosivulta tulevia pyyntöjä, voi kasvaa nopeasti niin, että sen toteuttaminen on lähes mahdotonta.

Kaikkiin näihin ongelmiin on olemassa ratkaisu, vaikka se ei ole vielä täysin valmis. Tämä ratkaisu on web sockets -tekniikka, joka sallii selaimen pitää avoin yhteys palvelimelle ja vaihtaa viestejä milloin tahansa.

Websocket-tekniikka on herättänyt paljon jännitystä verkkokehittäjien keskuudessa, mutta se on edelleen kehitysvaiheessa, vaikka sillä on jo hyvä selainyhteensopivuus:

Päällä Tämä hetki Paras tapa testata websocketteja käyttäviä sivuja on sisään Chrome-selain joka tarjoaa heille johdonmukaisimman tuen.

Pääsy verkkopistorasioihin

Websocketit ovat erikoistyökalu. Ne ovat tärkeitä sovelluksissa, kuten chatissa, massiivisissa moninpeleissä tai peer-to-peer-viestintätyökalussa. Websockettien avulla voit luoda uudentyyppisiä sovelluksia, mutta niitä käytetään useimmissa nykyaikaiset verkkosovellukset, JavaScriptin ohjaama, ei todennäköisesti ole järkevää.

Websocket-ratkaisut voivat olla erittäin monimutkaisia. JavaScript-koodin kehittäminen yhdelle sivulle on melko yksinkertainen tehtävä. Mutta luomiseen palvelinsovellus tarvitset paljon ohjelmointitietoja ja -taitoja, mukaan lukien monisäikeisyyden ja verkottumisen käsitteiden ymmärtäminen.

Websockettien käyttäminen edellyttää, että sivustosi verkkopalvelin on käynnissä erikoisohjelma, jota odotetaan kutsuttavan websocket-palvelimeksi. Tämä ohjelma vastaa kaikkien osallistujien vuorovaikutuksen koordinoinnista, ja kun se on käynnistetty, se toimii taukoamatta.

Monet hosting-yritykset eivät salli pitkäkestoisia ohjelmia, ellet maksa erillisestä verkkopalvelimesta, ts. palvelin, joka palvelee vain verkkosivustoasi. Jos sinulla on tavallinen jaettu isännöinti, et todennäköisesti pysty isännöimään websocketteja käyttäviä sivuja. Vaikka onnistuisitkin saamaan websocket-palvelimen toimimaan ja pitämään sen käynnissä, isännöinnin omistajasi todennäköisesti tunnistaa sen ja sammuttaa sen.

Jotta saat käsityksen websocket-palvelimen laajuudesta, harkitse joitain tehtäviä, jotka socket-palvelimen on suoritettava:

    koota "sanakirja" viesteistä, toisin sanoen päättää, minkä tyyppiset viestit ovat hyväksyttäviä ja mitkä eivät;

    tunnistaa virheet lähetettäessä viestejä asiakkaille ja lopeta yhteydenotto, jos niitä ei näytä olevan enää olemassa;

    käsitellä kaikki tiedot RAM-muisti, eli tiedot, joihin kaikki asiakkaat saattavat tarvita pääsyn ja tehdä niin turvallisesti ja luotettavasti. Tässä on monia mahdollisia implisiittisiä ongelmia, kuten kun yksi asiakas yrittää liittyä keskukseen, kun toinen on katkaistu, ja tiedot molemmista tallennetaan samaan muistiin.

Kehittäjät eivät todennäköisesti koskaan luo omia palvelinohjelma, käyttämällä websocketteja, koska se ei yksinkertaisesti ole vaaditun merkittävän vaivan arvoista. Helpoin tapa tällä alueella on asentaa jonkun toisen verkkosocket-palvelin ja kehittää verkkosivusi sitä varten. Koska websocket-standardin JavaScript-osan käyttäminen on yksinkertaista, tämän ei pitäisi aiheuttaa ongelmia.

Toinen tapa olisi ottaa jonkun toisen verkkosocket-palvelinkoodi ja räätälöidä se tarpeidesi mukaan. Tällä hetkellä on olemassa monia projekteja (joista monet ovat ilmaisia ​​ja mukana avoin lähdekoodi), jossa websocket-palvelimia kehitetään ratkaisemaan erilaisia ​​ongelmia eri kieliä palvelimen ohjelmointi.

Yksinkertainen websocket-asiakas

Web-sivun näkökulmasta websocket-toiminto on helppo ymmärtää ja käyttää. Ensimmäinen vaihe on luoda WebSocket-objekti ja välittää sille URL-osoite. Tämän koodi on samanlainen kuin seuraava:

Var socket = new WebSocket("ws://localhost/socketServer.php");

URL-merkkijono alkaa tekstillä ws://, joka identifioi verkkoliitäntäyhteyden. Tämä URL-osoite osoittaa palvelimella olevaan verkkosovellustiedostoon (tässä tapauksessa socketServer.php-skriptiin).

Web Sockets -standardi tukee myös URL-osoitteita, jotka alkavat tekstillä wss://, mikä ilmaisee vaatimuksen käyttää suojattua, salattua yhteyttä (samalla tavalla kuin pyytäessäsi verkkosivua, määritä URL-osoite, joka alkaa https://-protokollalla http:n sijaan. : //).

Websocketit voivat muodostaa yhteyden muuhunkin kuin vain verkkopalvelimeensa. Web-sivu voi avata yhteyden toisella web-palvelimella toimivaan verkkoliitäntäpalvelimeen ilman lisäponnistuksia.

WebSocket-objektin luominen pakottaa sivun yrittämään muodostaa yhteyden palvelimeen. Seuraavaksi sinun on käytettävä yhtä WebSocket-objektin neljästä tapahtumasta: onOpen (kun yhteys muodostetaan), onError (kun tapahtuu virhe), onClose (kun yhteys suljetaan) ja onMessage (kun sivu vastaanottaa viesti palvelimelta):

Socket.onopen = yhteysAvaa; socket.onmessage = viestiVastaanotettu; socket.onror = virheTodettu; socket.onopen = yhteysClosed;

Jos yhteys esimerkiksi onnistuu, olisi mukava lähettää vastaava vahvistusviesti. Tämä viesti toimitetaan menetelmällä lähettää() WebSocket-objekti, joka välitetään parametrina pelkkää tekstiä. Seuraava on toiminto, joka käsittelee onopen-tapahtumaa ja lähettää viestin:

Funktio connectionOpen() ( socket.send("Käyttäjänimi: [sähköposti suojattu]"); }

Oletettavasti web-palvelin vastaanottaa tämän viestin ja vastaa siihen.

OnError- ja onClose-tapahtumien avulla voidaan lähettää ilmoituksia verkkosivun vierailijalle. Mutta ylivoimaisesti tärkein on onMessage-tapahtuma, joka käynnistyy, kun palvelimelta saadaan uutta tietoa. Taas, JavaScript-koodi Tämän tapahtuman käsitteleminen on yksinkertaista - poimimme viestin tekstin data-omaisuudesta:

Funktio messageReceived(e) ( messageLog.innerHTML += "

Jos verkkosivu päättää, että kaikki sen työt on tehty, se voi sulkea yhteyden menetelmällä katkaista():

Socket.disconnect();

Tästä websocket-katsauksesta näet, että käyttämällä websocket-palvelinta kolmannen osapuolen kehittäjä ei aiheuta vaikeuksia - meidän on vain tiedettävä, mitä viestejä lähettää ja mitä odottaa.

Kulissien takana tehdään paljon työtä, jotta websocket-yhteydet toimisivat. Ensinnäkin web-sivu kommunikoi normaalilla HTTP-standardilla. Tämä yhteys on sitten päivitettävä websocket-yhteydeksi, mikä mahdollistaa ilmaisen kaksisuuntaisen viestinnän. Tässä vaiheessa saattaa ilmetä ongelmia, jos asiakkaan tietokoneen ja verkkopalvelimen välillä on välityspalvelin (kuten tavallisessa yritysverkosto). Välityspalvelin voi kieltäytyä yhteistyöstä ja katkaista yhteyden. Tämä ongelma voidaan ratkaista etsimällä epäonnistunut yhteys(WebSocket-objektin onError-tapahtuman kautta) ja käyttämällä yhtä GitHub-verkkosivustolla kuvatuista socket-polyfillistä. Nämä paikkamerkit käyttävät kyselymenetelmää websocket-yhteyden emulointiin.

Esimerkkejä websocketeista verkossa

Jos olet kiinnostunut kokeilemaan websocketteja, verkossa on monia sivustoja, joilla voit aloittaa kehitystyösi.

Aloita kokeilemalla websocket.org-sivustoa, joka tarjoaa yksinkertaisin palvelin websockets: Web-sivu lähettää sille viestin ja se palauttaa saman viestin verkkosivulle:

Vaikka tämä websocket-palvelin ei ole mikään erikoinen, sen avulla voit kokeilla kaikkia WebSocket-objektin ominaisuuksia. Lisäksi voit muodostaa yhteyden tähän palvelimeen sivulta, joka sijaitsee sekä tuotantoverkkopalvelimella että tietokoneesi testiverkkopalvelimella, tai jopa sivulta, joka on yksinkertaisesti käynnistetty kiintolevyltäsi:

Var socket = new WebSocket("ws://echo.websocket.org"); socket.onopen = yhteysAvaa; socket.onmessage = viestiVastaanotettu; funktio connectionOpen() ( socket.send("Käyttäjänimi: [sähköposti suojattu]"); ) funktio messageReceived(e) ( var messageLog = document.getElementById("messageLog"); messageLog.innerHTML += "
" + "Palvelimen vastaus: " + e.data; )

On myös websocket-palvelimia, jotka tarjoavat muita ominaisuuksia, mukaan lukien seuraavat.

22.9. Websocketit

Luku 18 osoittaa, kuinka asiakaskomentosarjat voivat olla JavaScript voi olla vuorovaikutuksessa palvelimien kanssa verkon kautta. Kaikki tämän luvun esimerkit käyttävät HTTP-protokollaa, mikä tarkoittaa, että HTTP-protokollan alkuperäinen luonne rajoittaa niitä kaikkia: tämä tilaton protokolla koostuu asiakaspyynnöistä ja palvelinvastauksista. HTTP-protokolla on itse asiassa erittäin erikoistunut verkkoprotokolla. Monipuolisempi verkkovuorovaikutuksia Internetin kautta (tai kautta paikalliset verkot) toteutetaan usein käyttämällä pitkäikäisiä yhteyksiä ja tarjoavat kaksisuuntaisen viestinnän TCP-vastakkeiden kautta. On melko vaarallista tarjota asiakaskomentosarja tällä kielellä JavaScript pääsy matalan tason TCP-socketeille WebSocket API -spesifikaatio määrittelee kuitenkin turvallisen vaihtoehdon: sen avulla asiakaskomentosarjat voivat luoda kaksisuuntaisia ​​yhteyksiä palvelimiin, jotka tukevat Web Socket -protokollaa. Tämä yksinkertaistaa huomattavasti joidenkin verkko-ongelmien ratkaisua.

Websocket-sovelluksen käyttöliittymä on hämmästyttävän helppokäyttöinen. Ensin sinun on luotava socket WebSocket()-konstruktorilla:
var socket = new WebSocket("ws://ws.example.com:1234/resurssi");

Web Socket -protokolla

Jotta voit käyttää websocketteja JavaScriptissä, sinun tarvitsee vain hallita tässä kuvattu websocket-asiakassovellusliittymä. Ei ole olemassa vastaavaa palvelinsovellusliittymää websocket-yhteensopivien palvelimien luomiseen. Tässä osiossa esitetään yksinkertainen esimerkkipalvelin, joka käyttää Node-tulkkia (osio 12.2) ja kolmannen osapuolen verkkosocket-palvelinkirjastoa. Asiakas ja palvelin kommunikoivat pitkäikäisten TCP-sockettien kautta Web Sockets Protocol -protokollan määrittelemien sääntöjen mukaisesti. Emme mene tässä yhteydessä protokollan yksityiskohtiin, mutta on huomattava, että websocket-protokolla on suunniteltu erittäin huolellisesti, jotta web-palvelimet voivat helposti käsitellä HTTP- ja websocket-pohjaisia ​​yhteyksiä samassa portissa.

Websocketit ovat saaneet laajan tuen selainvalmistajien keskuudessa. WebSockets-protokollan varhaisessa, julkaisua edeltävässä versiossa havaittiin vakava tietoturvavirhe, ja tätä kirjoitettaessa WebSockets-tuki on poistettu käytöstä joissakin selaimissa, kunnes protokollan suojattu versio voidaan standardoida. Esimerkiksi Firefox 4:ssä saatat joutua ottamaan käyttöön websocket-tuen avaamalla about:config-sivun ja asettamalla muuttujan "network.websocket. override-security-block" arvoksi tosi.

*********************************************

WebSocket()-konstruktorin argumentti on URL-osoite, joka käyttää ws://-protokollaa (tai wss://-protokollaa turvalliset yhteydet, samanlainen kuin https://). URL-osoite määrittää isännän nimen, johon yhteys muodostetaan, ja voi myös määrittää portin (oletusarvoisesti verkkosocketit käyttävät samaa porttia kuin HTTP- ja HTTPS-protokollat) ja polun tai resurssin.

Kun pistoke on luotu, tapahtumakäsittelijät rekisteröidään yleensä siihen:

socket.onopen = function(e) ( /* Yhteys muodostettu. */ );
socket.onclose = function(e) ( /* Yhteys suljettu. */ );
socket.onror = function(e) ( /* Jotain meni pieleen! */ );
socket.onmessage = function(e) (
var viesti = e.data; /* Palvelin lähetti viestin. */
};

Jos haluat lähettää tietoja palvelimelle socketin kautta, kutsu socketin send()-metodi:

socket.send("Hei, palvelin!");

Websocket-sovellusliittymän nykyinen versio tukee vain tekstiviestit ja lähettää ne UTF-8-koodatuina merkkijonoina. kuitenkin Nykyinen versio Web Socket Protocol -spesifikaatio sisältää tuen binäärisanomille, ja sovellusliittymän tulevat versiot voivat tukea binääritietojen vaihtoa palvelimen kanssa.

Kun komentosarja on lopettanut yhteydenpidon palvelimen kanssa, se voi sulkea verkkopistokkeen kutsumalla sen close()-metodiaan.

Websocketit ovat kaksisuuntaisia, ja asiakas ja palvelin voivat välittää viestejä toisilleen milloin tahansa yhdellä websocketin kautta muodostettua yhteyttä. Tämän vuorovaikutuksen ei välttämättä tarvitse olla pyyntöjen ja vastausten muodossa. Jokainen websocket-pohjainen palvelu määrittelee oman "aliprotokollansa" tiedon siirtämistä varten asiakkaan ja palvelimen välillä. Ajan myötä nämä "aliprotokollat" voivat kehittyä, ja saatat joutua toteuttamaan asiakkaita ja palvelimia, jotka tukevat useita aliprotokollan versioita. Onneksi Websocket-protokolla sisältää mekanismin, jonka avulla voit sopia aliprotokollasta, jota sekä asiakas että palvelin tukevat. Voit välittää joukon merkkijonoja WebSocket()-konstruktorille. Palvelin vastaanottaa sen asiakkaan tukemien aliprotokollien luettelona. Palvelin valitsee tukemansa aliprotokollan ja lähettää sen takaisin asiakkaalle. Kun yhteys on muodostettu, asiakas voi määrittää, mitä aliprotokollaa voidaan käyttää, tarkistamalla WebSocket-objektin protokollaominaisuuden.

Kohdassa 18.3 kuvataan EventSource-objektisovelluksen käyttöliittymä ja havainnollistetaan sen käyttöä chat-asiakkaan ja -palvelimen esimerkkitoteutuksen avulla. Websocketit tekevät toteutuksesta entistä helpompaa vastaavia sovelluksia. Esimerkki 22.16 havainnollistaa hyvin yksinkertaista chat-asiakasta: se muistuttaa esimerkkiä 18.15, mutta käyttää websocketteja kaksisuuntaiseen viestintään EventSource-objektin sijaan viestien vastaanottamiseen ja XMLHttpRequest-pyynnön lähettämiseen.

Esimerkki 22.16. Websocket-pohjainen chat-ohjelma


window.onload = function() (
// Huolehdi joistakin yksityiskohdista käyttöliittymä
var nick = prompt("Anna lempinimesi"); // Hanki alias
var input = document.getElementById("syöttö"); // Etsi syöttökenttä
input.focus(); // Aseta sisääntulon tarkennus
// Avaa websocket lähettääksesi ja vastaanottaaksesi chat-viestejä.
// Oletetaan, että myös HTTP-palvelin, josta komentosarja ladataan, on myös
// tukee websocketteja ja käyttää samaa isäntänimeä kommunikoidakseen sen kanssa
// ja portin numero, mutta sen sijaan http-protokolla:// käytetään ws://-protokollaa
var socket = new WebSocket("ws://" + location.host + "/");
// Näin viestit palvelimelta vastaanotetaan web-socketin kautta
socket.onmessage = function(event) ( // Kutsutaan, kun viesti vastaanotetaan
var msg = event.data; // Hae teksti tapahtumaobjektista
var solmu = document.createTextNode(msg); // Luo tekstisolmu
var div = document.createElement("div"); // Luo elementti
div.appendChild(solmu); // Lisää tekstisolmu
document.body.insertBefore(div, input); // ja lisää div ennen syöttökenttää
input.scrollIntoView(); // Varmista näkyvyys syöttöelementti
}
// Näin viestit lähetetään palvelimelle web-socketin kautta
input.onchange = function() ( // Kun käyttäjä napsauttaa Enter-näppäin
var msg = nimimerkki + ": " + input.value; // Käyttäjätunnus ja teksti
socket.send(msg); // Lähetä socketin kautta
input.value = ""; // Valmistaudu syöttämiseen seuraava viesti
}
};