如何使用websocket+node.js实现pc后台与小程序端实时通信

13 篇文章 0 订阅

如何使用websocket+node.js实现pc后台与小程序端实时通信

实现功能:实现pc后台与小程序端互发通信能够实时检测到

一、使用node.js创建一个服务器

  • 1.安装ws依赖
npm i ws
  • 2.创建index.js
const WebSocket = require('ws')

const wss = new WebSocket.Server({ port: 8888 })
const wsList = {}
console.log('服务器启动')
wss.on('connection', (ws) => {
  ws.on('message', (message) => {
    const result = JSON.parse(message)
    console.log('接收到的结果', result)
    // 页面初始化的时候,使用wsList将ws进行缓存
    if (result.message === 'init') {
      wsList[result.name] = ws
    } else {
      // 根据name的值来给指定的客户端发送信息
      const ws = wsList[result.name]
      ws.send(result.message)
    }
  })

  ws.on('close', () => {
    Object.keys(wsList).forEach((item) => {
      // 当websoket关闭的时候,要清空对应的ws
      if (wsList[item].readyState !== 1) {
        delete wsList[item]
      }
    })
  })
})
  • 3.打开终端,启动服务
node index.js

二、pc后台连接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后台</span>
    </div>
    <input type="text" id="input" />
    <button id="button">发送</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')
      //发送事件
      Btn.onclick = function () {
        let ipt = document.querySelector('#input')
        let obj = {
          name: 'WX',
          message: ipt.value,
        }
        //需转成字符串
        ws.send(JSON.stringify(obj))
      }
    </script>
  </body>
</html>

三、小程序端连接ws

这里是手动点击连接按钮,发起的websocket连接,可自行更改到其他合适的地方连接websocket

  • 1.创建两个按钮,连接按钮,发送按钮
<view @click="connect()">连接</view>
<view @click="sendSocket()">发送</view>
  • 2.定义事件,连接ws
//发送ws
sendSocket() {
	console.log('发送wx')
	uni.sendSocketMessage({
		data: JSON.stringify({
			name: 'PC',
			message: 'wx'
		})
	})
},
//连接ws
connect() {
	if (this.connected || this.connecting) {
		uni.showModal({
			content: '正在连接或者已经连接,请勿重复连接',
			showCancel: false,
		})
		return
	}
	this.connecting = true
	uni.showLoading({
		title: '连接中...',
	})
	uni.connectSocket({
		url: 'ws://localhost:8888',
		success(res) {
			// 这里是接口调用成功的回调,不是连接成功的回调,请注意
			console.log('uni.connectSocket success', res)
		},
		fail(err) {
			// 这里是接口调用失败的回调,不是连接失败的回调,请注意
			console.log('uni.connectSocket fail', err)
		},
	})
	//监听WebSocket连接打开事件
	uni.onSocketOpen((res) => {
		console.log('监听中')
		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服务不可用,请稍后再试',
				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)
		}
	})
},

四、实现效果

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 微信小程序是腾讯公司开发的一种应用程序框架,旨在帮助开发人员快速构建自己的应用程序,并且能够方便地在微信生态环境中进行推广和传播。Node.js是一种基于事件驱动、非阻塞I/O模型的服务器JavaScript环境,可以方便地构建高效的网络应用程序。在这两个技术的结合下,我们可以构建出非常优秀的微信小程序实现各种有趣、实用的功能。 使用Node.js开发微信小程序,我们可以方便地处理各种异步请求,包括网络请求、数据库请求等。同时,Node.js也提供了非常多的第三方库和模块,可以用来处理常用的任务,例如加密、压缩、日志记录等。这些库和模块,可以方便地在微信小程序中进行调用,减少了我们开发过程中的工作量。 微信小程序Node.js的结合,也可以实现一些高的功能,例如实现WebSocket协议进行即时通讯使用WebRTC协议进行音视频通话等。这些功能,可以让我们的微信小程序变得更加有趣、实用,在用户中获得更高的使用度和评价。 总而言之,微信小程序Node.js的结合,可以帮助我们更快地构建出优秀的网络应用程序,同时也可以实现更多的功能,提升微信小程序的价值和竞争力。 ### 回答2: 微信小程序是一种可以在微信里面运行的轻量级应用程序。而Node.js则是一种基于Chrome V8引擎的JavaScript运行环境,可以在服务器运行JavaScript代码。 微信小程序使用JavaScript语言进行编程,在开发过程中需要使用Node.js的一些模块和工具,并且微信开发者工具也是基于Node.js开发的。例如,小程序开发中需要用到的网络请求、文件读写、加密解密等功能,都可以通过Node.js提供的模块实现。同时,Node.js的工具包也可以为小程序的开发带来便利,例如Webpack和Babel可以帮助我们进行代码打包和转换,ESLint可以检测我们代码中的潜在问题等等。 在小程序的开发中,Node.js也可以帮助我们实现一些复杂的业务逻辑。例如,我们可以使用Node.js开发一个服务应用,用于提供小程序的数据接口、推送消息、定时任务等服务。这样的话,小程序的开发人员只需要调用这些服务的接口即可,而不必关心具体的实现细节。 总而言之,微信小程序Node.js可以互相促进,在小程序的开发中可以使用Node.js提供的工具和服务,来提升应用程序的性能和功能。 ### 回答3: 微信小程序开发是一项新兴的技术,而Node.js则是一种非常流行的后端开发技术。结合这两者可以实现更加强大的微信小程序开发。Node.js可以利用它强大的IO处理能力,为微信小程序提供后台服务,实现小程序业务逻辑的处理、数据的存储和管理等功能。同时,通过Node.js还可以进行与数据库的交互、实现数据的持久化等功能。此外,Node.js还拥有一些优秀的微信小程序开发框架,如WePY、mpvue等,这些框架可以快速地创建小程序,提高开发效率。 当我们使用Node.js进行微信小程序开发时,要注意一些小细节。首先需要了解微信小程序Node.js的交互方式,可以使用微信小程序提供的API与Node.js进行通信实现数据的传递。此外,还需要注意小程序的安全性问题,尤其是在与后台服务进行交互时,需要加强安全防护,避免出现信息泄露等安全问题。最后,还需要掌握一些微信小程序Node.js的相关技术,如微信小程序开发规范、Node.js框架等。 总之,微信小程序Node.js的结合可以为小程序提供更加丰富的功能和更加优秀的用户体验,具有非常广阔的发展前景,前景非常广阔。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gik99

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值