WebSockets
WebSocket is protocol, which enables two-way communication between a client and server:
The goal WebSocket is to provide a mechanism for browser-based applications that need two-way communication with servers that does not rely on opening multiple HTTP connections. (RFC 6455)
WebSocket works over HTTP protocol.
Working with string messages
Section titled “Working with string messages”var wsHost = "ws://my-sites-url.com/path/to/echo-web-socket-handler";var ws = new WebSocket(wsHost);var value = "an example message";
//onmessage : Event Listener - Triggered when we receive message form serverws.onmessage = function(message) { if (message === value) { console.log("The echo host sent the correct message."); } else { console.log("Expected: " + value); console.log("Received: " + message); }};
//onopen : Event Listener - event is triggered when websockets readyState changes to open which means now we are ready to send and receives messages from serverws.onopen = function() { //send is used to send the message to server ws.send(value);};Establish a web socket connection
Section titled “Establish a web socket connection”var wsHost = "ws://my-sites-url.com/path/to/web-socket-handler";var ws = new WebSocket(wsHost);Working with binary messages
Section titled “Working with binary messages”var wsHost = "http://my-sites-url.com/path/to/echo-web-socket-handler";var ws = new WebSocket(wsHost);var buffer = new ArrayBuffer(5); // 5 byte buffervar bufferView = new DataView(buffer);
bufferView.setFloat32(0, Math.PI);bufferView.setUint8(4, 127);
ws.binaryType = 'arraybuffer';
ws.onmessage = function(message) { var view = new DataView(message.data); console.log('Uint8:', view.getUint8(4), 'Float32:', view.getFloat32(0))};
ws.onopen = function() { ws.send(buffer);};Making a secure web socket connection
Section titled “Making a secure web socket connection”var sck = "wss://site.com/wss-handler";var wss = new WebSocket(sck);This uses the wss instead of ws to make a secure web socket connection which make use of HTTPS instead of HTTP
Syntax
Section titled “Syntax”- new WebSocket(url)
- ws.binaryType /* delivery type of received message: “arraybuffer” or “blob” */
- ws.close()
- ws.send(data)
- ws.onmessage = function(message) { /* … */ }
- ws.onopen = function() { /* … */ }
- ws.onerror = function() { /* … */ }
- ws.onclose = function() { /* … */ }
Parameters
Section titled “Parameters”|Parameter|Details |---|---|---|---|---|---|---|---|---|--- |url|The server url supporting this web socket connection. |data|The content to send to the host. |message|The message received from the host.