123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- import { AgoraRTMessage } from '$utils/socket/agoraRTM/agoraRTMIM';
- import config from "$config/config";
- export default {
- provide(){
- return {
- installSocketItem:(vm)=>{
- this.socketItem = vm;
- },
- sendGift:(data,send:boolean=false)=> this.sendGift(data,send)
- }
- },
- methods:{
- // 发送系统消息
- sendSystem(message){
- if (message && this.socketItem) {
- this.socketItem.triggerPushMessage(AgoraRTMessage.system,{
- message
- });
- }
- },
- // 发送加入房间消息
- sendJoinRoom(message){
- if (message && this.socketItem) {
- let resultData = this.agoraRTMIM.addUserInfo({
- message
- },true);
- this.socketItem.triggerPushMessage(AgoraRTMessage.joinHome,resultData);
- this.userJoinRoom().then(()=>{
- this.agoraRTMIM.send(resultData,AgoraRTMessage.joinHome);
- });
- }
- },
- // 发送礼物消息
- sendGift(data,send:boolean=false){
- if (data) {
- let userInfo = [];
- data.giveUserId.map((item)=>{
- let info = this.getMicroUserInfo(item);
- if (!info && this.giveUser && this.giveUser.uid && this.giveUser.uid === item) {
- info = this.giveUser;
- }
- if (info) {
- userInfo.push({
- uid:item,
- nickname:info.nick_name,
- toNick_color:'#000000'
- });
- }
- });
- let resultData = this.agoraRTMIM.addGiftInfo(this.agoraRTMIM.addUserInfo({}), {
- userInfo:userInfo,
- number: data.number,
- gift: data.gift
- });
- if (send) {
- this.agoraRTMIM.send(resultData,AgoraRTMessage.gift);
- if (data.gift.is_public_server) {
- this.sendBroadCast(resultData);
- }
- } else {
- this.socketItem.triggerPushMessage(AgoraRTMessage.gift,resultData);
- }
- }
- },
- // 全服播报
- sendBroadCast(data){
- if (config.globalRTMIM) {
- let resultData = config.globalRTMIM.addGlobal(data,this.roomInfo);
- return config.globalRTMIM.send(resultData,AgoraRTMessage.gift);
- }
- },
- // 向大家公布麦位信息
- sendWheatInfo(){
- // 提醒大家麦位信息得到了更新
- this.agoraRTMIM.send({
- pcWheatData: this.microInfo
- },AgoraRTMessage.wheat);
- },
- // 向大家公布申请排麦状态
- sendWheatQueueInfo(user,status:boolean=true){
- let resultData = this.agoraRTMIM.addQueueWheat({},user,status);
- // 向其他人广播
- this.agoraRTMIM.send(resultData,AgoraRTMessage.userRowWheat);
- // 执行通知自己
- this.agoraRTMIM.triggerMessage(resultData);
- }
- },
- mounted(){
- // 监听加入房间
- this.agoraRTMIM.on(AgoraRTMessage.joinHome,({data})=> this.addAdmission(data,false));
- // 监听收到礼物
- this.agoraRTMIM.on(AgoraRTMessage.gift,({data})=> {
- console.log(data);
- // 获取礼物信息
- let gift = this.$store.state.gift && this.$store.state.gift.giftObjectData && this.$store.state.gift.giftObjectData[data.giftId];
- if (!gift) {
- gift = {
- gid: data.giftId,
- gift_name: data.e_name,
- gift_type: data.type,
- play_image: data.show_gift_img || data.show_gif_img,
- pcplay_image: data.pcplay_image || data.show_gift_pc_img,
- base_image: data.show_img,
- gift_price: data.gift_price || 0
- }
- }
- // 获取赠送的用户id
- let uid = (data.userInfo || []).map((item)=> item.uid);
- this.sendGiveUserGift(gift,uid, gift.gift_price * data.giftNum || 0);
- });
- // 监听麦位信息
- this.agoraRTMIM.on(AgoraRTMessage.wheat,({data})=>{
- // app 那边不知为何反复发送此消息,问题是还不对麦位信息,导致的问题,有点多,不敢再开发使用更新了
- if (data.wheatData) {
- } else if (data.pcWheatData) {
- this.contrastWheatInfo(data.pcWheatData);
- // 设置当前排麦状态
- if (this.hasMicroInfo()) {
- this.downMicro();
- } else {
- // 否则移除订阅
- this.unPublish();
- }
- } else {
- this.getRoomMicroInfo(true,true);
- }
- });
- // 全服礼物播报
- config.globalRTMIM && config.globalRTMIM.on(AgoraRTMessage.gift,({data})=>{
- if (data.roomInfo && data.roomInfo.id !== this.roomInfo.rid) {
- this.sendGiveBroadCastGift(data);
- }
- })
- },
- beforeUnmount() {
- config.globalRTMIM && config.globalRTMIM.off(AgoraRTMessage.gift);
- }
- }
|