WebSockets have emerged as an alternative to traditional HTTP communication in web applications, offering a long-lived, bidirectional channel for communication between clients and servers.
Unlike HTTP, which follows a request/response protocol, WebSockets allow the server to send messages to the client without the client explicitly requesting them. Additionally, both the client and server can communicate with each other simultaneously, resulting in low latency and minimal data overhead.
WebSockets are supported by all modern browsers, making them an excellent choice for real-time and long-lived communications. However, it’s important to note that HTTP is still preferable for occasional data exchange and interactions initiated by the client due to its simplicity and ease of implementation.
When working with WebSockets, it’s essential to prioritize security by using the secure, encrypted protocol, wss://
, instead of the unsafe version, ws://
.
To establish a WebSockets connection in Node.js, use the WebSocket
object:
const WebSocket = require('ws');
const connection = new WebSocket('wss://myserver.com/something');
You can listen for various events using the onopen
, onerror
, and onmessage
properties of the connection
object. For example:
connection.onopen = () => {
//...
};
connection.onerror = error => {
console.log(`WebSocket error: ${error}`);
};
connection.onmessage = e => {
console.log(e.data);
};
To send data to the server, simply call the send
method on the connection object:
connection.onopen = () => {
connection.send('hey');
};
If you’re looking to implement a WebSockets server in Node.js, the ws
library is a popular choice. You can install it using yarn
:
yarn init
yarn add ws
Once installed, you can create a WebSockets server with just a few lines of code:
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', ws => {
ws.on('message', message => {
console.log(`Received message => ${message}`);
});
ws.send('ho!');
});
This code sets up a server on port 8080 and adds a callback function that sends a message to the client when a connection is established and logs any received messages.
For a live example of a WebSockets server implemented with Node.js, you can visit the following links: