Introduction to ws-ping
WebSocket communication has revolutionized real-time data transfer, and ws-ping is a lightweight yet powerful library that simplifies working with WebSockets. In this guide, we’ll introduce you to ws-ping and provide dozens of useful API explanations along with code snippets. Whether you’re building a chat application, a real-time data dashboard, or a multiplayer online game, ws-pping has got you covered.
Initial Setup
Installing ws-ping is straightforward. You can install it via npm:
npm install ws-ping
Creating a WebSocket Server
Let’s start by creating a basic WebSocket server using ws-ping:
const WebSocket = require('ws-ping'); const server = new WebSocket.Server({ port: 8080 }); server.on('connection', (ws) => { console.log('New client connected'); ws.on('message', (message) => { console.log(`Received: ${message}`); ws.send('Pong'); }); ws.send('Welcome to ws-ping server'); }); console.log('WebSocket server is running on ws://localhost:8080');
Creating a WebSocket Client
Next, let’s create a simple WebSocket client to connect to our server:
const WebSocket = require('ws-ping'); const ws = new WebSocket('ws://localhost:8080'); ws.on('open', () => { console.log('Connected to server'); ws.send('Ping'); }); ws.on('message', (message) => { console.log(`Received: ${message}`); });
Handling Disconnections
Handling client disconnections is crucial for maintaining a stable WebSocket connection:
server.on('close', () => { console.log('Client disconnected'); }); ws.on('close', () => { console.log('Disconnected from server'); });
Broadcasting Messages
Broadcasting messages to all connected clients can be done easily:
server.broadcast = (data) => { server.clients.forEach((client) => { if (client.readyState === WebSocket.OPEN) { client.send(data); } }); }; server.on('connection', (ws) => { ws.on('message', (message) => { server.broadcast(message); }); });
Authentication
Implementing basic authentication for your WebSocket server:
server.on('connection', (ws, req) => { const token = req.url.split('?')[1]; if (isValidToken(token)) { ws.send('Authentication successful'); } else { ws.close(4001, 'Invalid Token'); } }); function isValidToken(token) { // Your token validation logic here return token === 'secret-token'; }
Example Application: Real-Time Chat
Combining all of the above, let’s create a simple real-time chat application:
Server side:
const WebSocket = require('ws-ping'); const server = new WebSocket.Server({ port: 8080 }); server.broadcast = (data) => { server.clients.forEach((client) => { if (client.readyState === WebSocket.OPEN) { client.send(data); } }); }; server.on('connection', (ws) => { ws.on('message', (message) => { server.broadcast(message); }); }); console.log('Chat server is running on ws://localhost:8080');
Client side:
const WebSocket = require('ws-ping'); const ws = new WebSocket('ws://localhost:8080'); ws.on('open', () => { console.log('Connected to chat server'); }); ws.on('message', (message) => { console.log(`Message received: ${message}`); }); process.stdin.on('data', (data) => { ws.send(data.toString().trim()); });
With this setup, you have a fully functional real-time chat application using ws-ping. Feel free to extend this base to create more sophisticated applications!
Hash: 886d1c19af33c2378c3c1c1f6a7c11506a0f6654d28eed17a5e4efd902ff5027