JS 1.13 Websockets
Table of contents
Websockets är en tvåvägskommunikation för webbapplikationer. Med websockets kan vi öppna en permanent/långvarig anslutning mellan klienten och servern. Vi kan alltså skicka data (via så kallade “packets”) utan att skicka nya HTTP-requests eller bryta anslutningen. 1
Websockets lämpar sig speciellt bra för tjänster som behöver kontinuerligt datautbyte, som till exempel online-spel.
WebSocket-objektet
För att kommunicera via ett websocket-protokoll så skapar vi först ett WebSocket-object, som automatiskt direkt ansluter till servern. 2
WebSocket construktorn tar två parametrar, url och protocols (varav den senare är optional).
Exempel
const socket = new WebSocket(url, protocols);
URL
En sträng som är URL:en som vi vill connecta till. Den ska ha det speciella protokollet wss://
, eller ibland det minde säkra ws://
för lokala anslutningar.
Protocols (optional)
Antingen en sträng (eller en array av strängar) som specificerar ett sub-protokoll som servern måste supporta för att anslutningen ska lyckas.
Events/metoder
När socketen är skapat kan vi lyssna efter något av följande fyra events:
- open – anslutning upprättad
- message – data mottagen
- error – websocket error
- close – anslutning nerkopplad
Om vi istället vill skicka data, så använder vi socket.send(data)
.
Exempel
socket.onopen = function(event) {
alert('Connection established');
socket.send('My name is Karin');
};
socket.onmessage = function(event) {
alert(`Data received from server: ${event.data}`);
};
socket.onclose = function(event) {
if (event.wasClean) {
alert(`Connection closed cleanly, code=${event.code} reason=${event.reason}`);
} else {
// e.g. server process killed or network down
// event.code is usually 1006 in this case
alert('Connection died');
}
};
socket.onerror = function(error) {
alert(`[error] ${error.message}`);
};