前端websocket詳解

一、前端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-tw/n/285325.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-22 15:44
下一篇 2024-12-22 15:44

相關推薦

  • Boost Websocket Send用法介紹

    本文將詳細闡述Boost Websocket Send的相關內容,包括Boost Websocket Send的概念、使用方法、功能特點等,以便讀者深入了解和使用。 一、概述 Bo…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分散式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web伺服器。nginx是一個高性能的反向代理web伺服器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變數讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性感測器,能夠同時測量加速度和角速度。它由三個感測器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25

發表回復

登錄後才能評論