Rumah > Artikel > hujung hadapan web > Bekerja dengan WebSocket dan Komunikasi Masa Nyata dalam Node.js
Dalam aplikasi moden, komunikasi masa nyata adalah penting, terutamanya untuk ciri seperti sembang langsung, pemberitahuan dan alatan kerjasama. WebSocket ialah protokol yang membolehkan komunikasi dua arah antara klien dan pelayan melalui sambungan tunggal yang tahan lama. Artikel ini merangkumi WebSocket, pelaksanaannya dalam Node.js dan peranan Socket.IO, perpustakaan popular yang memudahkan penggunaan WebSocket dalam aplikasi masa nyata.
WebSocket ialah protokol yang mengekalkan sambungan berterusan, membenarkan pertukaran data tanpa kitaran permintaan-tindak balas yang berterusan HTTP. Beberapa kes penggunaan termasuk:
Mari bina pelayan WebSocket mudah menggunakan pakej ws.
Langkah 1: Pasang ws:
npm install ws
Langkah 2: Buat pelayan WebSocket:
const WebSocket = require('ws'); const server = new WebSocket.Server({ port: 8080 }); server.on('connection', (socket) => { console.log('Client connected'); // Listening for messages from the client socket.on('message', (message) => { console.log(`Received message: ${message}`); // Echo message back to client socket.send(`Server: ${message}`); }); // Handling connection close socket.on('close', () => { console.log('Client disconnected'); }); }); console.log('WebSocket server is running on ws://localhost:8080');
Langkah 3: Menyambung dari sisi pelanggan:
<script> const socket = new WebSocket('ws://localhost:8080'); socket.onopen = () => { console.log('Connected to server'); socket.send('Hello Server!'); }; socket.onmessage = (event) => { console.log(`Received from server: ${event.data}`); }; </script>
Socket.IO ialah perpustakaan yang memudahkan komunikasi masa nyata dan menambahkan ciri seperti penyambungan semula automatik dan penyiaran.
npm install socket.io
Pelaksanaan Bahagian Pelayan:
const express = require('express'); const http = require('http'); const { Server } = require('socket.io'); const app = express(); const server = http.createServer(app); const io = new Server(server); io.on('connection', (socket) => { console.log('A user connected'); socket.on('chat message', (msg) => { // Broadcast message to all connected clients io.emit('chat message', msg); }); socket.on('disconnect', () => { console.log('User disconnected'); }); }); server.listen(3000, () => { console.log('Server is listening on http://localhost:3000'); });
Pelaksanaan Sebelah Pelanggan:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Real-Time Chat</title> </head> <body> <h1>Chat Room</h1> <input> <h2> Node.js Streams: Efficient Data Handling </h2> <p>Node.js streams provide a way to process data piece by piece, which is particularly useful for handling large files.</p> <h3> Types of Streams </h3> <ol> <li> <strong>Readable</strong>: For reading data from a source.</li> <li> <strong>Writable</strong>: For writing data to a destination.</li> <li> <strong>Duplex</strong>: For both reading and writing.</li> <li> <strong>Transform</strong>: For modifying or transforming data as it’s read or written.</li> </ol> <h3> Example: Reading a Large File with Streams </h3> <pre class="brush:php;toolbar:false">const fs = require('fs'); const readStream = fs.createReadStream('largefile.txt', { encoding: 'utf8' }); readStream.on('data', (chunk) => { console.log('New chunk received:', chunk); }); readStream.on('end', () => { console.log('File reading completed'); });
Menskalakan aplikasi Node.js memastikan ia boleh mengendalikan beban yang meningkat dengan menambahkan lebih banyak sumber.
NGINX ialah pelayan web yang sering digunakan untuk pengimbangan beban, caching dan menyajikan kandungan statik.
npm install ws
Edit /etc/nginx/sites-available/default:
const WebSocket = require('ws'); const server = new WebSocket.Server({ port: 8080 }); server.on('connection', (socket) => { console.log('Client connected'); // Listening for messages from the client socket.on('message', (message) => { console.log(`Received message: ${message}`); // Echo message back to client socket.send(`Server: ${message}`); }); // Handling connection close socket.on('close', () => { console.log('Client disconnected'); }); }); console.log('WebSocket server is running on ws://localhost:8080');
<script> const socket = new WebSocket('ws://localhost:8080'); socket.onopen = () => { console.log('Connected to server'); socket.send('Hello Server!'); }; socket.onmessage = (event) => { console.log(`Received from server: ${event.data}`); }; </script>
SSL menyulitkan data antara klien dan pelayan, menambah lapisan keselamatan. Untuk menyediakan SSL:
npm install socket.io
Artikel ini telah meneroka keperluan komunikasi masa nyata, pengendalian data yang cekap, penskalaan dan mendapatkan aplikasi Node.js untuk penggunaan peringkat pengeluaran. Strim WebSockets, Socket.IO, NGINX dan Node.js ialah alatan berkuasa yang meningkatkan interaktiviti aplikasi, pengurusan data dan keselamatan untuk pengalaman dan kebolehskalaan pengguna yang lebih baik.
Atas ialah kandungan terperinci Bekerja dengan WebSocket dan Komunikasi Masa Nyata dalam Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!