Dengan pembangunan aplikasi web moden, permintaan untuk data masa nyata semakin tinggi. Node.js ialah rangka kerja hujung belakang JavaScript berdasarkan enjin V8, yang menyediakan platform yang cekap dan stabil untuk memproses data masa nyata.
Dalam Node.js, terdapat beberapa teknologi yang digunakan untuk mencapai pemindahan data masa nyata. Beberapa daripada mereka akan diperkenalkan di bawah.
WebSocket ialah protokol yang menyediakan saluran komunikasi dua hala untuk menghantar data masa nyata antara pelanggan dan pelayan. Tidak seperti HTTP, sambungan WebSocket adalah berterusan, yang bermaksud bahawa setelah sambungan diwujudkan, data boleh diterima daripada pelayan dan data juga boleh dihantar ke pelayan semasa sambungan dikekalkan.
Dalam Node.js, WebSocket boleh dilaksanakan menggunakan modul seperti ws atau socket.io. Semua modul ini menyediakan API yang mudah digunakan untuk mencipta pelayan WebSocket, mengendalikan sambungan dan pemindahan mesej dan mengekalkan sambungan.
Berikut ialah contoh kod yang menggunakan modul ws untuk melaksanakan pelayan WebSocket:
const WebSocket = require('ws'); const wsServer = new WebSocket.Server({ port: 8080 }); wsServer.on('connection', (ws) => { console.log('New client connected'); // send a welcome message to the client ws.send('Welcome to the WebSocket server!'); // handle messages from the client ws.on('message', (message) => { console.log(`Received message: ${message}`); // echo the message back to the client ws.send(`You sent: ${message}`); }); });
Acara Dihantar Pelayan (SSE) ialah Teknologi yang menggunakan protokol HTTP untuk menghantar acara masa nyata kepada pelanggan. Tidak seperti WebSocket, SSE adalah sehala dan hanya boleh menghantar data dari pelayan kepada pelanggan, tetapi ia masih merupakan teknologi yang sangat sesuai untuk menolak data masa nyata.
Dalam Node.js, SSE boleh dilaksanakan menggunakan modul seperti sse atau express-sse. Modul ini juga menyediakan beberapa API yang mudah untuk menghantar acara dan mengekalkan sambungan.
Berikut ialah contoh kod untuk melaksanakan pelayan SSE menggunakan modul express-sse:
const express = require('express'); const sse = require('express-sse'); const app = express(); app.use(express.static('public')); const sseServer = new sse(); // send an initial message to the client when the connection is established sseServer.send('Connected'); // handle SSE requests from the client app.get('/sse', sseServer.init); // send a message to all connected clients sseServer.send('A new message has arrived!'); // close the connection to all connected clients sseServer.close(); app.listen(8080, () => { console.log('SSE server started on port 8080'); });
Long-Polling ialah simulasi Teknologi untuk penghantaran data masa nyata yang menyerupai komunikasi dua hala melalui protokol HTTP. Tidak seperti WebSocket dan SSE, Long-Polling mensimulasikan pemindahan data masa nyata dengan memastikan permintaan HTTP terbuka pada pelayan.
Dalam Node.js, Long-Polling boleh dilaksanakan menggunakan rangka kerja seperti polka atau express. Rangka kerja ini menyokong pemprosesan tak segerak permintaan dan boleh memastikan sambungan terbuka sehingga permintaan diproses.
Berikut ialah contoh kod yang menggunakan rangka kerja polka untuk melaksanakan Long-Polling:
const polka = require('polka'); polka() .get('/long-polling', async (req, res) => { // wait for some event to happen const data = await waitForData(); // send the data back to the client res.end(data); }) .listen(8080, () => { console.log('Long-Polling server started on port 8080'); });
Ringkasan:
Di atas adalah beberapa teknologi untuk merealisasikan penghantaran data masa nyata dalam Node.js, setiap Setiap teknologi mempunyai kelebihan dan senario yang boleh digunakan. WebSocket ialah protokol yang digunakan secara meluas untuk aplikasi yang memerlukan komunikasi dua hala SSE adalah pelaksanaan mudah yang sesuai untuk senario yang hanya perlu menghantar data dari pelayan kepada pelanggan ialah kaedah yang menyerupai teknologi penghantaran data masa nyata untuk situasi di mana WebSocket atau SSE tidak boleh digunakan.
Atas ialah kandungan terperinci Bagaimana untuk menghantar data dalam masa nyata dalam nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!