微信小程序 Websocket詳解

一、WebSocket 概述

WebSocket 是 HTML5 開始提供的一種在單個 TCP 連接上進行全雙工通訊的協議。WebSocket 可以在瀏覽器和服務器之間建立實時的雙向通信,相比傳統的 HTTP,有更低的延遲和更高的效率。

WebSocket 在建立連接時,需要進行握手協議,握手過程的 header 信息顯示 WebSocket 支持的協議。客戶端請求建立 WebSocket 連接時,請求頭部包含了 Upgrade 和 Connection,服務器端返回的頭部信息中也包含了 Upgrade 和 Connection。

客戶端和服務器端使用一致的 WebSocket 生命周期管理,通信效率高,性能優越,操作簡單。

二、WebSocket 在小程序中的應用

在小程序開發中,可以利用微信開發者工具提供的模擬 websocket 功能完成初步的開發,同時在實際項目中需要使用到後端接口的支持,可以使用 Springboot 及 WebSocket 包括STOMP的技術。

使用微信小程序中的 WebSocket,在前端中通過JS提供的 WebSocket 接口來建立 WebSocket 連接,並通過 WebSocket 接口提供的方法向服務器發送消息或者接收服務器下發的消息。使用 WebSocket 接口發送消息時,調用 send() 方法,使用 onmessage() 方法接收消息。

三、示例代碼

前端代碼

var socketOpen = false 
var socketMsgQueue = [] 
const URL = 'wss://xxx.xxx.xxx.xxx:xxxx' //WebSocket 地址

wx.connectSocket({
  url: URL,
  success: function () {
    console.log('WebSocket連接成功')
  },
  fail: function () {
    console.log('WebSocket連接失敗')
  }
})

wx.onSocketOpen(function (res) {
  console.log('WebSocket連接已打開!')
  socketOpen = true 
  for (var i = 0; i < socketMsgQueue.length; i++) {
    sendSocketMessage(socketMsgQueue[i])
  }
  socketMsgQueue = []
})

wx.onSocketMessage(function (res) {
  console.log('收到服務器內容:' + res.data)
})

wx.onSocketClose(function (res) {
  console.log('WebSocket 已關閉!')
  socketOpen = false
})

function sendSocketMessage(msg) {
  if (socketOpen) {
    wx.sendSocketMessage({
      data: msg
    })
  } else {
    socketMsgQueue.push(msg)
  }
}

後端WebSocket配置

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Autowired
    private WebSocketInterceptor webSocketInterceptor;

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.enableSimpleBroker("/topic");
        registry.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws")
                .setAllowedOrigins("*")
                .addInterceptors(webSocketInterceptor)
                .withSockJS();
    }

}

四、小結

本文就微信小程序 WebSocket 進行了詳細的講解,並提供了相關的示例代碼。WebSocket 大大提升了前後端通信效率和性能,對於實時性要求較高的頁面和應用,可以使用 WebSocket 協議。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/227599.html

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

相關推薦

  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • Python購物車程序

    Python購物車程序是一款基於Python編程語言開發的程序,可以實現購物車的相關功能,包括商品的添加、購買、刪除、統計等。 一、添加商品 添加商品是購物車程序的基礎功能之一,用…

    編程 2025-04-29
  • 爬蟲是一種程序

    爬蟲是一種程序,用於自動獲取互聯網上的信息。本文將從如下多個方面對爬蟲的意義、運行方式、應用場景和技術要點等進行詳細的闡述。 一、爬蟲的意義 1、獲取信息:爬蟲可以自動獲取互聯網上…

    編程 2025-04-29
  • Vb運行程序的三種方法

    VB是一種非常實用的編程工具,它可以被用於開發各種不同的應用程序,從簡單的計算器到更複雜的商業軟件。在VB中,有許多不同的方法可以運行程序,包括編譯器、發布程序以及命令行。在本文中…

    編程 2025-04-29
  • Python一元二次方程求解程序

    本文將詳細闡述Python一元二次方程求解程序的相關知識,為讀者提供全面的程序設計思路和操作方法。 一、方程求解 首先,我們需要了解一元二次方程的求解方法。一元二次方程可以寫作: …

    編程 2025-04-29
  • 如何使用GPU加速運行Python程序——以CSDN為中心

    GPU的強大性能是眾所周知的。而隨着深度學習和機器學習的發展,越來越多的Python開發者將GPU應用於深度學習模型的訓練過程中,提高了模型訓練效率。在本文中,我們將介紹如何使用G…

    編程 2025-04-29
  • Web程序和桌面程序的區別

    Web程序和桌面程序都是進行軟件開發的方式,但是它們之間存在很大的區別。本文將從多角度進行闡述。 一、運行方式 Web程序運行於互聯網上,用戶可以通過使用瀏覽器來訪問它。而桌面程序…

    編程 2025-04-29
  • 微信小程序和Python數據交互完整指南

    本篇文章將從多個方面介紹如何在微信小程序中實現與Python的數據交互。通過本文的學習,您將掌握如何將微信小程序與後台Python代碼結合起來,實現更豐富的功能。 一、概述 微信小…

    編程 2025-04-29

發表回復

登錄後才能評論