首先在小程序直播组件设置bindstatechange="stateChange" 方法进行监听,然后通过code来判断主播是否断线和wx.getNetworkType({})判断自己是否断线,然后进行相应的操作。
小提示:我这边是通过status改变页面,显示直播结束或者等待直播,可根据自己的想法进行调整
监听方法的链接:https://developers.weixin.qq.com/miniprogram/dev/component/live-pusher.html
wxml代码:
<live-player bindstatechange="stateChange"
id="player" class="player" object-fit="fillCrop"
src="{{playUrl}}" mode="RTC" autoplay />
wx.getNetworkType({})方法用的比较少,一般在直播,游戏,即时通讯(重发消息)中会用到。
链接:https://developers.weixin.qq.com/miniprogram/dev/api/device/network/wx.getNetworkType.html
js代码:
stateChange(event) {
let code = event.detail.code
let layerContext = wx.createLivePlayerContext('player', this);
switch (code) {
case -2301:
// 这里是为了恢复拉流,先停止再重新渲染
layerContext.stop({
success: () => {
wx.hideLoading()
wx.showToast({
title: '主播回来了',
})
layerContext.play();
//以下为自己的逻辑
this.setData({
status: 1
})
},
fail: () => {
wx.hideLoading()
wx.showToast({
title: '主播连不上了',
})
//以下为自己的逻辑
this.setData({
status: 2
})
}
})
//判断用户是否是自己的原因断网
//获取网络
wx.getNetworkType({
success: res => {
//是主播的原因:网络异常或主播异常退出
if (res.networkType != "none") {
wx.showToast({
title: '主播跑丢了',
icon: 'loading',
})
wx.showLoading({
title: '正在重新连接',
})
//以下为自己的逻辑
this.setData({
status: 2
})
} else {
//是用户的原因:网络异常
wx.showToast({
title: '请不要在山卡卡里观看直播',
icon: 'loading',
duration: 2000
})
this.setData({
status: 2
})
}
}
})
break;
default:
break;
}
},
网友评论