web與后台交互--websocket


web與后台交互--websocket

websocket 一直都想進行了解一下,而且在實際開發過程中,經常遇到類似的問題,奈何一些緣故,被迫選擇長輪詢模式。思來想去還是不妥,因而自己先研究一下再說話。

嘗試

既然選擇 websocket,那就需要前台后台了。在這過程中,有一點犯難了。
當后台選擇 node 作為服務時,有很多類似的 包 可以供選擇,而相應的都提供了 client 和 server 的demo。但作為一個前端,能用瀏覽器的api就可能少引入第三方包。因而最終定下來:

  • 前台 websocket 瀏覽器自帶的api
  • node ws

client

websocket 這里還是看看阮一峰老師的文章,mdn的文檔不是很清晰

  // url 選擇后台websocket的url
  const ws = new WebSocket("ws://localhost:8080");

  ws.addEventListener('open', evt => {
    console.log("Connection open ...");
    ws.send("Hello WebSockets!");
  })

  ws.addEventListener('message', evt => {
    const { data } = evt
    console.log("Received Message: " + data);

    if(typeof data === String) {
      console.log(`Received data string ${data}`);
    }

    if(data instanceof ArrayBuffer){
      console.log(`Received arraybuffer ${data}`);
    }
    // ws.close();
  })
  
  ws.addEventListener("close", evt => {
    console.log(evt, 'close')
  });

  ws.addEventListener('error', evt => {
    console.log(evt, 'error')
  })

server

ws

const WebSocketServer = require('ws').Server

const wss = new WebSocketServer({
  port: 8080
})

wss.on('connection', ws => {
  ws.send('后台傳入的數據')
  ws.on('message', data => {
    console.log(data, '前台傳入的數據')
  })
})

console.log('WebSocket server is listening on ws://localhost:8080')

在使用過程中,需要注意 文檔使用說明,目前有很多websocket庫,就看個人喜好了。

總結

目前先初步了解,並知道前后台通訊使用,而不再是后台說這個不好做就不做了。這個還是很有必要接入的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM