【uni-app】websocket在vue的基本使用
【摘要】
文章目录
创建websocket连接链接websocket打开websocket链接,发送消息接收消息
事件监听,关闭socket
关闭websocket点击事件调用websocket全...
前后端需要使用websocket连接来进行传值,但是手机端和APP端的websocket方法使用是不一致的,需要进行区分。
创建websocket连接
进入页面的时候创建websocket连接,整个页面随时可用,整个websocket可以放在进度条或者是导航栏,我这来是放在了时间进度条里面,每个页面都可以调用。
这个方法是在created的方法中调用的,后续其他关于websocket的方法都在这个方法中写。
connectSocketInit() {}
- 1
链接websocket
创建一个websocket对象,用来发送,接收和关闭socket,用这个对象来连接服务器
this.socketTask = uni.connectSocket({
// 【非常重要】必须确保你的服务器是成功的,如果是手机测试千万别使用ws://127.0.0.1:9099【特别容易犯的错误】
url: config.socketBaseUrl,//后端websocket地址
success(data) {
console.log("websocket连接成功");
},
});
- 1
- 2
- 3
- 4
- 5
- 6
- 7
打开websocket链接,
只有打开websocket链接才可以发消息和接收消息
this.socketTask.onOpen((res) => {
console.log("WebSocket连接正常打开中...!");
this.is_open_socket = true;
- 1
- 2
- 3
发送消息
this.socketTask.send({
data:{
"classId":this.localStorage.get("classId"),
"courseId":this.localStorage.get("courseId")
},
async success() {
console.log("消息发送成功");
},
});
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
接收消息
this.socketTask.onMessage((res) => {
console.log("收到服务器内容:" + res.data);
});
- 1
- 2
- 3
事件监听,关闭socket
// 这里仅是事件监听【如果socket关闭了会执行】
this.socketTask.onClose(() => {
console.log("已经被关闭了");
});
- 1
- 2
- 3
- 4
关闭websocket
这个方法在页面离开的时候执行
// 关闭websocket【离开这个页面的时候执行关闭】
closeSocket() {
this.socketTask.close({
success(res) {
this.is_open_socket = false;
console.log("关闭成功", res);
},
fail(err) {
console.log("关闭失败", err);
},
});
},
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
点击事件调用websocket
clickRequest() {
//要确保当前已经打开了websocket链接
if (this.is_open_socket) {
//数据发送
//获取数据
var classId = localStorage.getItem("classId");
var courserId = localStorage.getItem("courseId");
this.type = "approve";
//拼接后端接收的字符串
let actions ="type:" +this.type + "," +"classId:" +classId +",courserId:" +courserId;
this.socketTask.send({
data: actions,
async success() {
console.log("消息发送成功");
},
});
}
},
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
全部代码
// 进入这个页面的时候创建websocket连接【整个页面随时使用】
connectSocketInit() {
// 创建一个this.socketTask对象【发送、接收、关闭socket都由这个对象操作】
this.socketTask = uni.connectSocket({
// 【非常重要】必须确保你的服务器是成功的,如果是手机测试千万别使用ws://127.0.0.1:9099【特别容易犯的错误】
url: config.socketBaseUrl,
success(data) {
console.log("websocket连接成功");
},
});
// 消息的发送和接收必须在正常连接打开中,才能发送或接收【否则会失败】
this.socketTask.onOpen((res) => {
console.log("WebSocket连接正常打开中...!");
this.is_open_socket = true;
// 注:只有连接正常打开中 ,才能正常成功发送消息
this.socketTask.send({
data:{
"classId":this.localStorage.get("classId"),
"courseId":this.localStorage.get("courseId")
},
async success() {
console.log("消息发送成功");
},
});
// 注:只有连接正常打开中 ,才能正常收到消息
this.socketTask.onMessage((res) => {
//数据接收
this.redata = res.data;
if (this.redata.indexOf("suspend") != -1) {
var array = this.redata.split(",");
var activeId = array[5];
var activeId1 = activeId.split(":")[1];
var activityId = localStorage.getItem("activityId");
if (this.redata.match("type:suspend") && activeId1 == activityId) {
this.num = this.num + 1;
this.$refs.uToast.show({
title: "请注意,当前有 " + this.num + " 名学生申请暂停课程",
type: "success",
position: "top",
});
}
}
});
});
// 这里仅是事件监听【如果socket关闭了会执行】
this.socketTask.onClose(() => {
console.log("已经被关闭了");
});
},
// 关闭websocket【离开这个页面的时候执行关闭】
closeSocket() {
this.socketTask.close({
success(res) {
this.is_open_socket = false;
console.log("关闭成功", res);
},
fail(err) {
console.log("关闭失败", err);
},
});
},
clickRequest() {
if (this.is_open_socket) {
//数据发送
//获取数据
var classId = localStorage.getItem("classId");
var courserId = localStorage.getItem("courseId");
this.type = "approve";
//拼接后端接收的字符串
let actions ="type:" +this.type + "," +"classId:" +classId +",courserId:" +courserId;
this.socketTask.send({
data: actions,
async success() {
console.log("消息发送成功");
},
});
}
},
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
这里只介绍了websocket在APP端应用的代码,下一篇介绍一下websocket服务端的代码。点击直达
文章来源: blog.csdn.net,作者:张艳伟_Laura,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/Laura__zhang/article/details/123315689
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)