国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何使用websocket+node.js實(shí)現(xiàn)pc后臺(tái)與小程序端實(shí)時(shí)通信

這篇具有很好參考價(jià)值的文章主要介紹了如何使用websocket+node.js實(shí)現(xiàn)pc后臺(tái)與小程序端實(shí)時(shí)通信。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

實(shí)現(xiàn)功能:實(shí)現(xiàn)pc后臺(tái)與小程序端互發(fā)通信能夠?qū)崟r(shí)檢測(cè)到

一、使用node.js創(chuàng)建一個(gè)服務(wù)器

  • 1.安裝ws依賴
npm i ws
  • 2.創(chuàng)建index.js
const WebSocket = require('ws')

const wss = new WebSocket.Server({ port: 8888 })
const wsList = {}
console.log('服務(wù)器啟動(dòng)')
wss.on('connection', (ws) => {
  ws.on('message', (message) => {
    const result = JSON.parse(message)
    console.log('接收到的結(jié)果', result)
    // 頁面初始化的時(shí)候,使用wsList將ws進(jìn)行緩存
    if (result.message === 'init') {
      wsList[result.name] = ws
    } else {
      // 根據(jù)name的值來給指定的客戶端發(fā)送信息
      const ws = wsList[result.name]
      ws.send(result.message)
    }
  })

  ws.on('close', () => {
    Object.keys(wsList).forEach((item) => {
      // 當(dāng)websoket關(guān)閉的時(shí)候,要清空對(duì)應(yīng)的ws
      if (wsList[item].readyState !== 1) {
        delete wsList[item]
      }
    })
  })
})
  • 3.打開終端,啟動(dòng)服務(wù)
node index.js

二、pc后臺(tái)連接ws

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
      <span>P后臺(tái)</span>
    </div>
    <input type="text" id="input" />
    <button id="button">發(fā)送</button>

    <script>
      var ws = new WebSocket(`ws://localhost:8888`)
      //連接ws
      ws.onopen = function () {
        ws.send(JSON.stringify({ name: 'PC', message: 'init' }))
        console.log('已連接')
      }
      //接收
      ws.onmessage = async function (mes) {
        console.log('pc接收到的消息', mes)
      }
      let Btn = document.getElementById('button')
      //發(fā)送事件
      Btn.onclick = function () {
        let ipt = document.querySelector('#input')
        let obj = {
          name: 'WX',
          message: ipt.value,
        }
        //需轉(zhuǎn)成字符串
        ws.send(JSON.stringify(obj))
      }
    </script>
  </body>
</html>

三、小程序端連接ws

這里是手動(dòng)點(diǎn)擊連接按鈕,發(fā)起的websocket連接,可自行更改到其他合適的地方連接websocket

  • 1.創(chuàng)建兩個(gè)按鈕,連接按鈕,發(fā)送按鈕
<view @click="connect()">連接</view>
<view @click="sendSocket()">發(fā)送</view>
  • 2.定義事件,連接ws
//發(fā)送ws
sendSocket() {
	console.log('發(fā)送wx')
	uni.sendSocketMessage({
		data: JSON.stringify({
			name: 'PC',
			message: 'wx'
		})
	})
},
//連接ws
connect() {
	if (this.connected || this.connecting) {
		uni.showModal({
			content: '正在連接或者已經(jīng)連接,請(qǐng)勿重復(fù)連接',
			showCancel: false,
		})
		return
	}
	this.connecting = true
	uni.showLoading({
		title: '連接中...',
	})
	uni.connectSocket({
		url: 'ws://localhost:8888',
		success(res) {
			// 這里是接口調(diào)用成功的回調(diào),不是連接成功的回調(diào),請(qǐng)注意
			console.log('uni.connectSocket success', res)
		},
		fail(err) {
			// 這里是接口調(diào)用失敗的回調(diào),不是連接失敗的回調(diào),請(qǐng)注意
			console.log('uni.connectSocket fail', err)
		},
	})
	//監(jiān)聽WebSocket連接打開事件
	uni.onSocketOpen((res) => {
		console.log('監(jiān)聽中')
		if (this.pageVisible) {
			this.connecting = false
			this.connected = true
			uni.hideLoading()

			uni.showToast({
				icon: 'none',
				title: '連接成功',
			})
			console.log('onOpen', res)
			uni.sendSocketMessage({
				data: JSON.stringify({
					name: 'WX',
					message: 'init'
				})
			})
		}
	})
	uni.onSocketError((err) => {
		console.log('onError', err)
		if (this.pageVisible) {
			this.connecting = false
			this.connected = false
			uni.hideLoading()

			uni.showModal({
				content: '連接失敗,可能是websocket服務(wù)不可用,請(qǐng)稍后再試',
				showCancel: false,
			})

		}
	})
	uni.onSocketMessage((res) => {
		console.log('接收到了通知', res)
		if (this.pageVisible) {
			this.msg = res.data
			console.log('onMessage', res)
		}
	})
	uni.onSocketClose((res) => {
		if (this.pageVisible) {
			this.connected = false
			this.msg = ''
			console.log('onClose', res)
		}
	})
},

四、實(shí)現(xiàn)效果

小程序與后端websocket通信,vue3,uni-app,websocket,node.js,小程序文章來源地址http://www.zghlxwxcb.cn/news/detail-771260.html

到了這里,關(guān)于如何使用websocket+node.js實(shí)現(xiàn)pc后臺(tái)與小程序端實(shí)時(shí)通信的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于vue+node.js的健身微信小程序設(shè)計(jì)與實(shí)現(xiàn)

    基于vue+node.js的健身微信小程序設(shè)計(jì)與實(shí)現(xiàn)

    作者主頁:編程指南針 作者簡(jiǎn)介:Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、CSDN博客專家 、CSDN內(nèi)容合伙人、掘金特邀作者、阿里云博客專家、51CTO特邀作者、多年架構(gòu)師設(shè)計(jì)經(jīng)驗(yàn)、騰訊課堂常駐講師 主要內(nèi)容:Java項(xiàng)目、Python項(xiàng)目、前端項(xiàng)目、人工智能與大數(shù)據(jù)、簡(jiǎn)歷模板、學(xué)習(xí)資料、面試題庫

    2024年02月12日
    瀏覽(17)
  • WebSocket簡(jiǎn)述及通過node.js的基本實(shí)現(xiàn)

    WebSocket是自Html5開始在單個(gè)TCP連接上進(jìn)行全雙工通信 1 的協(xié)議,它使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡(jiǎn)單,允許服務(wù)端主動(dòng)向客戶端推送數(shù)據(jù)。在WebSocket API中,瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進(jìn)行雙向數(shù)據(jù)傳輸。

    2024年02月09日
    瀏覽(18)
  • uniapp小程序端使用騰訊地圖

    uniapp小程序端使用騰訊地圖

    一、獲取騰訊地圖密鑰 1. 找到騰訊地圖API 騰訊地圖A地址PI 注冊(cè)并登錄后點(diǎn)擊 開發(fā)文檔 選擇 微信小程序JavaScript SDK 進(jìn)入后按照 Hello world! 中的步驟進(jìn)行 2. 申請(qǐng)密鑰 點(diǎn)擊上面第一步中的 申請(qǐng)密鑰 ,進(jìn)入我的應(yīng)用,在創(chuàng)建應(yīng)用中輸入創(chuàng)建的名稱和類型 創(chuàng)建成功后點(diǎn)擊 添加

    2024年02月16日
    瀏覽(25)
  • 如何開發(fā)微信小程序,后端,前端,小程序端,如何部署到騰訊云托管

    如何開發(fā)微信小程序,后端,前端,小程序端,如何部署到騰訊云托管

    開發(fā)微信小程序是一項(xiàng)非常有趣的任務(wù),它涉及到前端、后端和小程序端的開發(fā)。在本文中,我們將介紹如何開發(fā)微信小程序,并將其部署到騰訊云托管。 一、前端開發(fā) 前端開發(fā)是微信小程序開發(fā)的第一步。在這一步中,我們需要使用微信小程序開發(fā)工具來創(chuàng)建一個(gè)新的小

    2024年02月16日
    瀏覽(15)
  • uniapp 實(shí)現(xiàn)富文本編輯器【小程序端】

    uniapp 實(shí)現(xiàn)富文本編輯器【小程序端】

    css資源文件戳該鏈接:富文本css文件鏈接 編輯菜單我搞成吸頂效果了,方便手機(jī)編輯不用再滑到頭部點(diǎn)編輯菜單:css實(shí)現(xiàn)元素吸頂效果 ————————————————————————————————————————————

    2024年02月16日
    瀏覽(28)
  • 微信小程序開發(fā)通過mock后臺(tái)數(shù)據(jù),如何使用mock模擬后臺(tái)數(shù)據(jù),以及在小程序中使用

    微信小程序開發(fā)通過mock后臺(tái)數(shù)據(jù),如何使用mock模擬后臺(tái)數(shù)據(jù),以及在小程序中使用

    作為一名前端開發(fā)人員,應(yīng)該有很多像我一樣不會(huì)寫后臺(tái)接口,但是網(wǎng)上非常多的項(xiàng)目都是需要后臺(tái)數(shù)據(jù)支持的,這個(gè)時(shí)候前端開發(fā)人員可能會(huì)犯愁,現(xiàn)在我給大家推薦一個(gè)網(wǎng)站,可以幫助我們簡(jiǎn)單模擬后代數(shù)據(jù) 1.首先,在該網(wǎng)址https://www.fastmock.site注冊(cè)登錄,然后點(diǎn)擊添加項(xiàng)

    2024年02月11日
    瀏覽(23)
  • uniapp實(shí)現(xiàn)微信小程序端動(dòng)態(tài)生成海報(bào)

    uniapp實(shí)現(xiàn)微信小程序端動(dòng)態(tài)生成海報(bào)

    背景: 基于uniapp實(shí)現(xiàn)微信小程序中商品詳情的海報(bào)生成與保存 效果圖: 思路: 首先把海報(bào)上需要的內(nèi)容準(zhǔn)備好,比如用戶頭像,商品信息,二維碼等。需要注意的是,因?yàn)槎S碼是動(dòng)態(tài)生成的,所以需要后端傳給我們,前端需要把路徑和參數(shù)傳給后端,后端請(qǐng)求微信服務(wù)接

    2024年02月12日
    瀏覽(23)
  • 【云開發(fā)】小程序端中使用云函數(shù)的介紹

    【云開發(fā)】小程序端中使用云函數(shù)的介紹

    云函數(shù)基本介紹 云函數(shù)即在云端(服務(wù)器端)運(yùn)行的函數(shù) : 在物理設(shè)計(jì)上,一個(gè)云函數(shù)可由多個(gè)文件組成,占用一定量的CPU 內(nèi)存等計(jì)算資源; 各云函數(shù)完全獨(dú)立,可分別部署在不同的地區(qū); 開發(fā)者無需購買、搭建服務(wù)器,只需編寫函數(shù)代碼并部署到云端即可在小程序端調(diào)用; 同時(shí)

    2023年04月08日
    瀏覽(13)
  • uniapp(vue3)+node.js+websocket(實(shí)現(xiàn)實(shí)時(shí)通信效果)

    uniapp(vue3)+node.js+websocket(實(shí)現(xiàn)實(shí)時(shí)通信效果)

    文章目錄 概要 整體架構(gòu)流程 技術(shù)名詞解釋 技術(shù)細(xì)節(jié) 小結(jié) uniapp基于vue3,小程序的聊天功能 項(xiàng)目是基于node.js服務(wù)器搭建的簡(jiǎn)易雙向通信網(wǎng)頁,實(shí)現(xiàn)了實(shí)時(shí)更新在線人數(shù)以及用戶間即時(shí)通訊的功能。 后臺(tái)接口代碼 1、首先我們可以通過Express 應(yīng)用程序生成器快速搭建一個(gè)后臺(tái)

    2024年03月26日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包