Senario aplikasi WebSocket dalam aplikasi Web
WebSocket ialah protokol untuk komunikasi dua hala antara penyemak imbas dan pelayan web moden. Tidak seperti protokol HTTP tradisional, WebSocket membenarkan pelayan menghantar data secara aktif kepada klien tanpa memerlukan klien untuk memulakan permintaan. Ciri komunikasi dua hala masa nyata ini menjadikan WebSocket digunakan secara meluas dalam pelbagai senario aplikasi Web.
// 客户端代码 const socket = new WebSocket('ws://server:port/chat'); socket.onopen = function() { console.log('WebSocket连接已建立'); }; socket.onmessage = function(event) { const message = event.data; console.log('接收到消息:', message); // 处理接收到的消息 }; socket.onclose = function(event) { console.log('WebSocket连接已关闭'); }; document.querySelector('#send-button').addEventListener('click', function() { const message = document.querySelector('#message-input').value; socket.send(message); }); // 服务器端代码(使用Node.js和ws库) const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 8080 }); wss.on('connection', function(ws) { console.log('已建立WebSocket连接'); ws.on('message', function(message) { console.log('接收到消息:', message); // 处理接收到的消息 // 模拟回复消息 ws.send('收到消息:' + message); }); ws.on('close', function() { console.log('WebSocket连接已关闭'); }); });
// 客户端代码 const socket = new WebSocket('ws://server:port/stock'); socket.onopen = function() { console.log('WebSocket连接已建立'); }; socket.onmessage = function(event) { const stockData = JSON.parse(event.data); console.log('接收到股票数据:', stockData); // 更新展示最新股票行情 }; socket.onclose = function(event) { console.log('WebSocket连接已关闭'); }; // 服务器端代码(使用Node.js和ws库) const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 8080 }); wss.on('connection', function(ws) { console.log('已建立WebSocket连接'); // 模拟每秒推送一次股票数据 const stockData = { symbol: 'AAPL', price: 150.25, timestamp: Date.now() }; setInterval(function() { ws.send(JSON.stringify(stockData)); }, 1000); ws.on('close', function() { console.log('WebSocket连接已关闭'); }); });
// 客户端代码 const socket = new WebSocket('ws://server:port/editor'); socket.onopen = function() { console.log('WebSocket连接已建立'); }; socket.onmessage = function(event) { const editorData = JSON.parse(event.data); console.log('接收到编辑数据:', editorData); // 更新文档内容 }; socket.onclose = function(event) { console.log('WebSocket连接已关闭'); }; // 用户编辑操作示例(假设使用Quill.js作为富文本编辑器) const editor = new Quill('#editor-container', { theme: 'snow' }); editor.on('text-change', function(delta, oldDelta, source) { if (source === 'user') { const editorData = { delta: delta, timestamp: Date.now() }; socket.send(JSON.stringify(editorData)); } }); // 服务器端代码(使用Node.js和ws库) const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 8080 }); wss.on('connection', function(ws) { console.log('已建立WebSocket连接'); ws.on('message', function(message) { const editorData = JSON.parse(message); console.log('接收到编辑数据:', editorData); // 处理编辑操作 // 广播编辑操作给其他用户 wss.clients.forEach(function(client) { if (client !== ws && client.readyState === WebSocket.OPEN) { client.send(JSON.stringify(editorData)); } }); }); ws.on('close', function() { console.log('WebSocket连接已关闭'); }); });
Ringkasan:
Kemunculan WebSocket telah banyak mempromosikan keupayaan komunikasi masa nyata aplikasi Web. WebSocket boleh memainkan peranan yang hebat dalam senario seperti sembang segera, paparan data masa nyata dan penyuntingan kolaboratif berbilang orang. Pembangun boleh menggunakan WebSocket untuk melaksanakan fungsi ini dengan mudah dan meningkatkan pengalaman pengguna dan prestasi masa nyata aplikasi. Pada masa yang sama, perlu diperhatikan bahawa pembangun harus mempertimbangkan keselamatan rangkaian dan isu prestasi apabila menggunakan WebSocket untuk memastikan kestabilan dan keselamatan aplikasi.
Atas ialah kandungan terperinci Senario aplikasi WebSocket dalam aplikasi web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!