Link Search Menu Expand Document (external link)

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}`);
};

Referenser