一、前端websocket怎麼用
在前端頁面中使用websocket需要創建一個WebSocket對象並指定一個URL,連接到服務器後,可以通過send()方法向服務器發送數據,通過onmessage事件接收服務器發送的數據,通過onclose事件處理關閉連接時的動作。以下是一個用於連接到本地WebSocket服務器的示例代碼:
const socket = new WebSocket('ws://127.0.0.1:8080');
socket.onopen = function(event) {
console.log('WebSocket is connected.');
}
socket.onmessage = function(event) {
console.log('Received data: ' + event.data);
}
socket.onclose = function(event) {
console.log('WebSocket is closed.');
}
socket.send('Hello Server!');
二、前端websocket配置要求
在使用websocket時,需要服務器端支持WebSocket協議。如果使用Node.js作為服務器端,可以使用ws模塊創建WebSocket服務器。如果使用Java作為服務器端,可以使用Java-WebSocket或Jetty WebSocket API等Java庫創建WebSocket服務器。
另外,由於WebSocket使用的協議是ws或wss,而不是http或https,因此需要服務器端支持Cross-Origin Resource Sharing(CORS)策略,否則會遇到同源策略問題。
三、前端websocket項目
前端websocket常用於實時通信的項目,例如在線聊天室、實時在線遊戲等。以下是一個用於在前端頁面顯示實時股票行情的示例代碼:
const socket = new WebSocket('ws://127.0.0.1:8080');
const table = document.getElementById('stockTable');
socket.onmessage = function(event) {
const data = JSON.parse(event.data);
const row = table.insertRow();
row.insertCell().textContent = data.code;
row.insertCell().textContent = data.name;
row.insertCell().textContent = data.price;
}
socket.send(JSON.stringify({ action: 'subscribe', codes: ['000001.SZ', '600000.SH'] }));
四、前端websocket更新列表數據
前端websocket可以用於更新列表數據,並實現實時顯示。以下是一個用於實時更新在線用戶列表的示例代碼:
const socket = new WebSocket('ws://127.0.0.1:8080');
const userList = document.getElementById('userList');
socket.onmessage = function(event) {
const users = JSON.parse(event.data);
userList.innerHTML = '';
for (let user of users) {
const item = document.createElement('li');
item.textContent = user.name;
userList.appendChild(item);
}
}
socket.send(JSON.stringify({ action: 'get_users' }));
setInterval(function() {
socket.send(JSON.stringify({ action: 'get_users' }));
}, 3000);
五、前端websocket客戶端
前端websocket的客戶端可以在瀏覽器中測試WebSocket服務器的功能。以下是一個用於測試WebSocket服務器的示例代碼:
const socket = new WebSocket('ws://127.0.0.1:8080');
const input = document.getElementById('messageInput');
const output = document.getElementById('messageOutput');
socket.onmessage = function(event) {
output.textContent = output.textContent + '\n' + event.data;
}
input.addEventListener('keydown', function(event) {
if (event.keyCode === 13) {
socket.send(input.value);
input.value = '';
}
});
六、前端websocket的使用
前端websocket可以用於各種實時通信場景,包括聊天室、在線遊戲、實時交易等。以下是一個用於實現實時在線交易的示例代碼:
const socket = new WebSocket('ws://127.0.0.1:8080');
socket.onopen = function(event) {
console.log('WebSocket is connected.');
}
socket.onmessage = function(event) {
console.log('Received data: ' + event.data);
// 更新交易狀態
}
socket.onclose = function(event) {
console.log('WebSocket is closed.');
}
const order = { symbol: 'AAPL', price: 142.50, volume: 100 };
socket.send(JSON.stringify({ action: 'place_order', data: order }));
七、前端websocket配置教程
以下是一個使用Node.js和ws模塊創建的WebSocket服務器的示例代碼:
const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 8080 });
server.on('connection', function(socket) {
console.log('WebSocket is connected.');
socket.on('message', function(message) {
console.log('Received data: ' + message);
socket.send('Server Echo: ' + message);
});
socket.on('close', function() {
console.log('WebSocket is closed.');
});
});
八、前端websocket傳遞參數
可以將JSON格式的數據作為websocket的消息傳遞,並在前端頁面中解析,進行相應的處理。以下是一個用於傳遞用戶登錄信息的示例代碼:
const socket = new WebSocket('ws://127.0.0.1:8080');
socket.onmessage = function(event) {
const data = JSON.parse(event.data);
if (data.action === 'login') {
// 處理登錄結果
}
}
const user = { username: 'test', password: '123456' };
socket.send(JSON.stringify({ action: 'login', data: user }));
九、前端websocket傳圖片
前端websocket可以用於傳輸二進制數據,因此可以使用它來傳輸圖片等二進制數據,將圖片顯示在前端頁面上。以下是一個用於傳輸圖片並在前端頁面中顯示的示例代碼:
const socket = new WebSocket('ws://127.0.0.1:8080');
socket.onmessage = function(event) {
const data = new Uint8Array(event.data);
const blob = new Blob([data], { type: 'image/png' });
const url = URL.createObjectURL(blob);
const img = document.createElement('img');
img.setAttribute('src', url);
document.body.appendChild(img);
}
const fileReader = new FileReader();
fileReader.onload = function(event) {
const data = event.target.result;
socket.send(data);
}
const fileInput = document.getElementById('fileInput');
fileInput.addEventListener('change', function() {
const file = fileInput.files[0];
fileReader.readAsArrayBuffer(file);
});
十、前端websocket面試題選取
1、請簡述WebSocket的優勢和缺陷。
優勢:
1、實時性好,客戶端和服務器可以實時雙向通信。
2、在HTTP協議基礎上創建,使用更方便,資源消耗更小。
3、協議應用較廣,支持跨域通信。
缺陷:
1、瀏覽器兼容性問題,部分瀏覽器不支持WebSocket。
2、服務器端實現較為複雜。
2、請簡述WebSocket和Ajax的區別。
1、Ajax是基於HTTP協議,只支持單向通信,而WebSocket可以實現雙向通信。
2、Ajax的請求響應比較頻繁,會佔用服務器資源,而WebSocket可以重複利用TCP連接,減少了服務器資源的佔用。
3、Ajax在請求時需要攜帶請求頭和請求體,數據傳輸比較大,而WebSocket僅需傳輸數據,數據傳輸量小。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/285325.html
微信掃一掃
支付寶掃一掃