最初版本 合并
This commit is contained in:
parent
ceb2b8084d
commit
74a9778a62
6
App.vue
6
App.vue
@ -1,6 +1,10 @@
|
||||
<script>
|
||||
export default {
|
||||
globalData: {
|
||||
im: {}
|
||||
},
|
||||
onLaunch: function() {
|
||||
getApp().globalData.im = this.imService
|
||||
console.log('App Launch');
|
||||
},
|
||||
onShow: function() {
|
||||
@ -15,4 +19,4 @@ export default {
|
||||
<style lang="scss">
|
||||
/*每个页面公共css */
|
||||
@import 'uview-ui/index.scss';
|
||||
</style>
|
||||
</style>
|
||||
|
@ -103,6 +103,7 @@ export default {
|
||||
// 账号登录1达人0商家
|
||||
if(this.state==1){
|
||||
this.$u.api.login({ member_name: this.zhanghaoA, member_password: this.mimaA }).then(res => {
|
||||
console.log(JSON.stringify(res))
|
||||
if (res.errCode != 0) {
|
||||
// 恢复按钮可点击状态
|
||||
this.clickstate=false
|
||||
@ -122,6 +123,7 @@ export default {
|
||||
});
|
||||
}else{
|
||||
this.$u.api.shoplogin({ member_name: this.zhanghao, member_password: this.mima }).then(res => {
|
||||
console.log(JSON.stringify(res))
|
||||
if (res.errCode != 0) {
|
||||
// 恢复按钮可点击状态
|
||||
this.clickstate=false
|
||||
|
@ -271,7 +271,6 @@
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const ChatRoomService =require('../../static/chatservice');
|
||||
export default {
|
||||
data: {
|
||||
fil: true,
|
||||
@ -290,6 +289,33 @@
|
||||
chatRoomService:{},
|
||||
danmulist:[]
|
||||
},
|
||||
onLaunch: function() {
|
||||
console.log('App Launch');
|
||||
},
|
||||
onShow: function() {
|
||||
this.stop()
|
||||
this.startPreview()
|
||||
this.start()
|
||||
},
|
||||
onHide: function() {
|
||||
console.log('App Hide');
|
||||
},
|
||||
//模拟onshow生命周期
|
||||
created() {
|
||||
//监听当前窗口显示
|
||||
currentWebview.addEventListener('show',e=>{
|
||||
console.log('search show');
|
||||
this.startPreview()
|
||||
this.start()
|
||||
})
|
||||
},
|
||||
|
||||
//摧毁之前的声明周期
|
||||
beforeDestroy() {
|
||||
//移除监听事件
|
||||
console.log(123)
|
||||
currentWebview.removeEventListener('show',e=>{})
|
||||
},
|
||||
onReady() {
|
||||
// 注意:需要在onReady中 或 onLoad 延时
|
||||
this.context = uni.createLivePusherContext("livePusher", this);
|
||||
@ -306,6 +332,8 @@
|
||||
},
|
||||
|
||||
onLoad(a){
|
||||
console.log(getApp().globalData.im)
|
||||
|
||||
this.url = a.url.replace("*","&")
|
||||
let that = this
|
||||
const token = uni.getStorageSync('token');
|
||||
@ -333,27 +361,17 @@
|
||||
console.log(res.data)
|
||||
that.info = res.data.data.memberInfo
|
||||
|
||||
console.log(uni.getStorageSync('userinfo'),123)
|
||||
//当前用户
|
||||
var currentUser = {
|
||||
id : res.data.data.memberInfo.member_id + "",
|
||||
nickname : res.data.data.memberInfo.member_nickname + "",
|
||||
avatar: res.data.data.memberInfo.member_avatar
|
||||
};
|
||||
|
||||
|
||||
var room = {
|
||||
id : a.id + "",
|
||||
name : a.id + ""
|
||||
};
|
||||
console.log(room)
|
||||
//构造chatRoomService
|
||||
that.chatRoomService = new ChatRoomService(room, currentUser);
|
||||
that.chatRoomService.initialWhenNewMessage(that.whenNewMessage);
|
||||
that.chatRoomService.connectGoEasyIM();
|
||||
//获取当前聊天室数据
|
||||
that.room = that.chatRoomService.room;
|
||||
|
||||
}
|
||||
})
|
||||
this.chatRoomService = getApp().globalData.im
|
||||
this.chatRoomService.subscribeGroupMessage(a.id)
|
||||
let shi = 0;
|
||||
let fen = 0;
|
||||
let miao = 0;
|
||||
|
@ -49,6 +49,7 @@ function IMService() {
|
||||
|
||||
//群聊消息记录,map格式,每个群对应一个数组
|
||||
this.groupMessages = {};
|
||||
|
||||
|
||||
/*
|
||||
* 监听器们
|
||||
@ -69,6 +70,13 @@ function IMService() {
|
||||
this.onFriendListChange = function (friends) {};
|
||||
//群列表发生改变
|
||||
this.onGroupListChange = function (groups) {};
|
||||
|
||||
this.whenNewMessage = function () {
|
||||
|
||||
};
|
||||
this.whenOnlineUserChange = function () {
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
//登录
|
||||
@ -380,9 +388,8 @@ IMService.prototype.initialIMListeners = function () {
|
||||
|
||||
|
||||
//订阅群消息
|
||||
IMService.prototype.subscribeGroupMessage = function () {
|
||||
let groupIds = Object.keys(this.groups);
|
||||
this.im.subscribeGroup(groupIds)
|
||||
IMService.prototype.subscribeGroupMessage = function (id) {
|
||||
this.im.subscribeGroup([id])
|
||||
.then(() => {
|
||||
console.log('订阅群消息成功')
|
||||
})
|
||||
@ -607,4 +614,181 @@ function removeGroupPendingMessage(imService,groupId, message){
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
IMService.prototype.initialWhenNewMessage = function (whenNewMessage) {
|
||||
this.whenNewMessage = whenNewMessage;
|
||||
};
|
||||
|
||||
IMService.prototype.initialWhenOnlineUserChange = function (whenOnlineUserChange) {
|
||||
this.whenOnlineUserChange = whenOnlineUserChange;
|
||||
};
|
||||
|
||||
|
||||
//监听新消息
|
||||
IMService.prototype.listenerNewMessage = function () {
|
||||
|
||||
this.im.on(GoEasyIM.EVENT.GROUP_MESSAGE_RECEIVED, (message) => {
|
||||
var content = JSON.parse(message.payload.text);
|
||||
this.addNewMessage(message);
|
||||
this.whenNewMessage(content);
|
||||
})
|
||||
}
|
||||
|
||||
IMService.prototype.addNewMessage = function (message) {
|
||||
var content = JSON.parse(message.payload.text);
|
||||
let messageContent = "";
|
||||
//聊天消息
|
||||
if (content.type == this.room.MessageType.CHAT) {
|
||||
messageContent = content.content;
|
||||
}
|
||||
//道具消息
|
||||
if (content.type == this.room.MessageType.PROP) {
|
||||
if (content.content == this.room.Prop.ROCKET) {
|
||||
messageContent = "送出了一枚大火箭";
|
||||
}
|
||||
if (content.content == this.room.Prop.HEART) {
|
||||
messageContent = "送出了一个大大的比心";
|
||||
}
|
||||
}
|
||||
//添加消息
|
||||
let newMessage = new Message(message.senderId, content.senderNickname, messageContent);
|
||||
this.room.messages.push(newMessage);
|
||||
};
|
||||
|
||||
//监听用户上下线
|
||||
IMService.prototype.listenerGroupPresence = function () {
|
||||
this.im.on(GoEasyIM.EVENT.GROUP_PRESENCE, (event) => {
|
||||
//更新在线用户数
|
||||
this.room.onlineUsers.count = event.groupOnlineCount;
|
||||
|
||||
if (event.action == 'join' || event.action == 'online') {
|
||||
let userData = JSON.parse(event.userData);
|
||||
//添加新用户
|
||||
let user = new User(event.userId, userData.nickname, userData.avatar);
|
||||
|
||||
//添加在线用户,避免用户重复
|
||||
if (!this.room.onlineUsers.users.find(item => item.id == event.userId)) {
|
||||
this.room.onlineUsers.users.push(user);
|
||||
}
|
||||
|
||||
//添加进入房间的消息
|
||||
let message = new Message(event.userId, userData.nickname, " 进入房间", this.room.MessageType.CHAT);
|
||||
this.room.messages.push(message);
|
||||
} else {
|
||||
let offlineUserIndex = this.room.onlineUsers.users.findIndex(item => item.id == event.userId);
|
||||
if (offlineUserIndex > -1) {
|
||||
//将离开的用户从onlineUsers中删掉
|
||||
let offlineUser = Object.assign(this.room.onlineUsers.users[offlineUserIndex]);
|
||||
this.room.onlineUsers.users.splice(offlineUserIndex, 1);
|
||||
//添加离开消息
|
||||
let message = new Message(offlineUser.id, offlineUser.nickname, " 离开房间", this.room.MessageType.CHAT)
|
||||
this.room.messages.push(message);
|
||||
}
|
||||
}
|
||||
this.whenOnlineUserChange(this.room.onlineUsers);
|
||||
})
|
||||
};
|
||||
|
||||
//查询和初始化在线用户列表和在线用户数
|
||||
IMService.prototype.initialOnlineUsers = function (roomId) {
|
||||
let self = this;
|
||||
|
||||
//查询最新上线的用户列表
|
||||
this.im.groupHereNow(roomId)
|
||||
.then(result => {
|
||||
if (result.code == 200) {
|
||||
let users = [];
|
||||
result.content && result.content.map(function (onlineUser) {
|
||||
let userData = JSON.parse(onlineUser.userData);
|
||||
let user = new User(onlineUser.userId, userData.nickname, userData.avatar);
|
||||
users.push(user);
|
||||
});
|
||||
self.room.onlineUsers = {
|
||||
users: users
|
||||
};
|
||||
}
|
||||
}).catch(e => {
|
||||
if (e.code == 401) {
|
||||
console.log("您还没有开通用户在线状态提醒,登录goeasy->我的应用->查看详情->高级功能,自助开通.");
|
||||
} else {
|
||||
console.log(e);
|
||||
}
|
||||
});
|
||||
//获取聊天室在线用户数
|
||||
this.im.groupOnlineCount(roomId)
|
||||
.then(result => {
|
||||
this.room.onlineUsers.count = result.content.onlineCount;
|
||||
}).catch(e => {
|
||||
console.log(e)
|
||||
})
|
||||
};
|
||||
|
||||
//订阅聊天室成员上下线
|
||||
IMService.prototype.subscribePresence = function (roomId) {
|
||||
this.im.subscribeGroupPresence([roomId])
|
||||
.then(() => {
|
||||
console.log('成员上下线订阅成功')
|
||||
}).catch(e => {
|
||||
console.log(e)
|
||||
})
|
||||
}
|
||||
|
||||
//订阅聊天室消息
|
||||
IMService.prototype.subscribeRoomMessage = function (room, user) {
|
||||
this.room = new Room(room.id, room.name, user);
|
||||
//监听上下线提醒
|
||||
this.listenerGroupPresence();
|
||||
|
||||
//监听新消息
|
||||
this.listenerNewMessage();
|
||||
//订阅用户上下线事件
|
||||
this.subscribePresence(this.room.id);
|
||||
//订阅聊天室消息
|
||||
this.subscribeRoomMessage(this.room.id);
|
||||
this.im.subscribeGroup([roomId])
|
||||
.then(result => {
|
||||
console.log('消息订阅成功')
|
||||
}).catch(e => {
|
||||
console.log(e)
|
||||
})
|
||||
}
|
||||
|
||||
//历史消息
|
||||
IMService.prototype.initialChatHistory = function (roomId) {
|
||||
var self = this;
|
||||
this.im.history({
|
||||
groupId: roomId
|
||||
}).then(res => {
|
||||
res.content.forEach(function (message) {
|
||||
self.addNewMessage(message);
|
||||
})
|
||||
}).catch(function (error) {
|
||||
if (error.code == 401) {
|
||||
console.log("您还没有开通历史消息的权限,登录goeasy->我的应用->查看详情->高级功能,自助开通.");
|
||||
} else {
|
||||
console.log(error);
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
//发送消息
|
||||
IMService.prototype.sendMessages = function (roomId, content) {
|
||||
var contentMessage = {
|
||||
text: JSON.stringify(content)
|
||||
};
|
||||
let message = this.im.createTextMessage(contentMessage);
|
||||
this.im.sendGroupMessage(roomId, message)
|
||||
.then(() => {
|
||||
console.log('消息发送成功')
|
||||
}).catch(e => {
|
||||
console.log(e);
|
||||
})
|
||||
};
|
||||
|
||||
//退出聊天室
|
||||
IMService.prototype.quitRoom = function (roomId) {
|
||||
this.im.disconnect()
|
||||
};
|
||||
|
||||
export default IMService;
|
Loading…
Reference in New Issue
Block a user