本文介绍: 后端生成验证码时存入用户的唯一Id和ip,前端获取到验证码后,与后台建立 WebSocket 连接,然后游戏端填入验证码向后端接口发起请求,遍历整个clients列表,与数据库中的ip进行匹配,向匹配的ip发送消息。由于可能存在不同客户端Ip相同的情况,这里则需要根据唯一ID进行区分。前端向后台服务器发请求获取验证码,然后端游输入验证码,向我的后端发请求获取验证信息。后台给游戏端返回信息的时候同时给微信小程序端返回验证结果。意思是不要微信小程序端主动触发,验证是否绑定的请求。
需求
前端向后台服务器发请求获取验证码,然后端游输入验证码,向我的后端发请求获取验证信息。后台给游戏端返回信息的时候同时给微信小程序端返回验证结果。意思是不要微信小程序端主动触发,验证是否绑定的请求。
思路
后端生成验证码时存入用户的唯一Id和ip,前端获取到验证码后,与后台建立 WebSocket 连接,然后游戏端填入验证码向后端接口发起请求,遍历整个clients列表,与数据库中的ip进行匹配,向匹配的ip发送消息。由于可能存在不同客户端Ip相同的情况,这里则需要根据唯一ID进行区分
代码
前端
// 建立 WebSocket 连接
const socket = uni.connectSocket({
url: 'wss://xxxx.com:8889',
success() {
console.log("ws连接成功!");
},
fail() {
console.log("ws连接失败!");
},
});
//监听WebSocket接收消息事件
socket.onMessage((message)=>{
console.log('监听WebSocket接收消息事件',message.data);
const data = JSON.parse(message.data)
if(data.type == 'invalid'){
uni.showToast({
title: '无效验证码',
duration: 2000,
icon:'none'
});
}else{
if(data.openid == this.userOpenid){
if(data.result=='绑定成功'){
uni.showToast({
title: "绑定成功",
icon:'success',
duration:1500,
complete: () => {//在这里执行跳转操作
setTimeout(()=>{
uni.switchTab({
url:'/pages/index/index'
})
},1500)
}
})
uni.closeSocket({
success() {
console.log("WebSocket连接已关闭");
},
fail() {
console.log("关闭WebSocket连接失败");
},
});
}else{
uni.showToast({
title: '绑定失败',
duration: 2000,
icon:'none'
});
}
}
}
})
后端
//app
const WebSocket = require('ws')
const wss = new WebSocket.Server(
{
server:httpsServer
},
()=>{
console.log('socket start');
}
)
// 将wss对象挂载到全局对象global上,在其他页面使用global.wss访问
global.wss = wss
//接口
exist(){
//.....
// 向前端小程序发送绑定结果
global.wss.clients.forEach((client) => {
//ip客户端IP地址
const ip = client._socket.remoteAddress || client.upgradeReq.connection.remoteAddress;
console.log('客户端IP地址:', ip,secretIp);
if(ip==secretIp){
client.send(JSON.stringify({
openid: secretOpenid,
result: '绑定成功',
}));
}
});
//.....
}
记录一下。。。。
原文地址:https://blog.csdn.net/T3165919332/article/details/134603381
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_22140.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。