Browse Source

Ltb2020年11月10日09:13:43
添加两个js文件

老狐\25396 4 years ago
parent
commit
4bc045115c
2 changed files with 249 additions and 0 deletions
  1. 0 0
      common/goeasy-im-1.3.1.js
  2. 249 0
      common/goeasyimutil.js

File diff suppressed because it is too large
+ 0 - 0
common/goeasy-im-1.3.1.js


+ 249 - 0
common/goeasyimutil.js

xqd
@@ -0,0 +1,249 @@
+import GoEasyIM from '@/common/goeasy-im-1.3.1.js';
+
+function Friend(uuid, name, avatar) {
+	this.uuid = uuid;
+	this.name = name;
+	this.avatar = avatar;
+}
+
+
+function CurrentUser(uuid, name, avatar) {
+	this.uuid = uuid;
+	this.name = name;
+	this.avatar = avatar;
+}
+//初始化
+function IMService() {
+	this.im = GoEasyIM.getInstance({
+		host: 'hangzhou.goeasy.io', //应用所在的区域地址: [hangzhou.goeasy.io, 新加坡暂不支持IM,敬请期待]
+		 //appkey: "BC-eef530bc08134a22b2a58ec8f8da0b25" //测试  
+		// appkey: "BC-f420edb1a2c24b97ad43a55299987a85" //测试
+		appkey: "BC-087763b7d212460484b71bffeaecb359" // 客户
+	});
+	console.log(this.im)
+	//当前“我”
+	this.currentUser = null;
+	//我的好友
+	this.friends = {};
+	//私聊消息记录,map格式,每个好友对应一个数组
+	this.privateMessages = {};
+	//收到一条私聊消息
+	this.onNewPrivateMessageReceive = function(friendId, message) {};
+	this.onConversationsUpdate = function(conversations) {};
+}
+
+IMService.prototype.login = function(user) {
+	console.log(user)
+	if (user) {
+		//初始化当前用户
+		this.currentUser = new CurrentUser(user.uuid, user.name, user.avatar);
+		return true;
+	} else {
+		return false;
+	}
+};
+IMService.prototype.getPrivateMessages = function(friendId) {
+	console.log(this.privateMessages)
+	if (!this.privateMessages[friendId]) {
+		this.privateMessages[friendId] = {
+			sentMessages: [],
+			pendingMessages: []
+		};
+	}
+	return this.privateMessages[friendId]
+};
+
+//连接GoEasy
+IMService.prototype.connectIM = function() {
+	this.initialIMListeners();
+	this.im.connect({
+		id: this.currentUser.uuid,
+		data: {
+			avatar: this.currentUser.avatar,
+			name: this.currentUser.name
+		}
+	}).then(() => {
+		console.log('connect成功')
+	}).catch(error => {
+		console.log('connect失败,请确保网络正常,appkey和host正确,code:' + error.code + " content:" + error.content);
+	});
+};
+IMService.prototype.initialIMListeners = function() {
+	this.im.on(GoEasyIM.EVENT.CONNECTED, () => {
+		console.log('连接成功.')
+	});
+
+	this.im.on(GoEasyIM.EVENT.DISCONNECTED, () => {
+		console.log('连接断开.')
+	});
+
+	this.im.on(GoEasyIM.EVENT.CONNECTING, (times) => {
+		console.log('连接中', times);
+	});
+
+	//监听会话列表
+	this.im.on(GoEasyIM.EVENT.CONVERSATIONS_UPDATED, (conversations) => {
+		this.conversations = conversations;
+		this.onConversationsUpdate(this.conversations)
+	});
+
+	//监听私聊消息
+	this.im.on(GoEasyIM.EVENT.PRIVATE_MESSAGE_RECEIVED, (message) => {
+		//更新私聊消息记录
+		let friendId;
+
+		if (this.currentUser.uuid == message.senderId) {
+			friendId = message.receiverId;
+		} else {
+			friendId = message.senderId;
+		}
+		removePrivatePendingMessage(this, friendId, message);
+		let friendMessages = this.getPrivateMessages(friendId);
+		friendMessages.sentMessages.push(message);
+		//如果页面传入了相应的listener,执行listener
+		this.onNewPrivateMessageReceive(friendId, message);
+	});
+};
+//加载单聊历史消息
+IMService.prototype.loadPrivateHistoryMessage = function(friendId, timeStamp) {
+	return new Promise((resolve, reject) => {
+		this.im.history({
+			friendId: friendId,
+			lastTimestamp: timeStamp
+		}).then(result => {
+			let history = result.content;
+			let privateMessages = this.getPrivateMessages(friendId);
+			let friendMessages = privateMessages.sentMessages;
+			for (let i = history.length - 1; i >= 0; i--) {
+				friendMessages.unshift(history[i])
+			}
+			resolve(friendMessages)
+		}).catch(error => {
+			if (error.code == 401) {
+				console.log("您尚未开通历史消息,请登录GoEasy,查看应用详情里自助启用.");
+			}
+			reject(error)
+		});
+	})
+};
+
+function removePrivatePendingMessage(imService, friendId, message) {
+	let privateMessages = imService.getPrivateMessages(friendId);
+	let pendingMessages = privateMessages.pendingMessages;
+	let pendingMessageIndex = pendingMessages.findIndex(item => item.messageId == message.messageId);
+	if (pendingMessageIndex > -1) {
+		pendingMessages.splice(pendingMessageIndex, 1);
+	}
+}
+//发送私聊消息
+IMService.prototype.sendPrivateTextMessage = function(friendId, text) {
+	let textMessage = this.im.createTextMessage({
+		text: text
+	});
+	this.sendPrivateMessage(friendId, textMessage);
+};
+
+//私聊图片消息
+IMService.prototype.sendPrivateImageMessage = function(friendId, imageFile) {
+	let imageMessage = this.im.createImageMessage({
+		file: imageFile,
+		onProgress: function(progress) {
+			console.log(progress)
+		}
+	});
+	this.sendPrivateMessage(friendId, imageMessage);
+};
+
+//私聊视频消息
+IMService.prototype.sendPrivateVideoMessage = function(friendId, videoFile) {
+	let videoMessage = this.im.createVideoMessage({
+		file: videoFile,
+		onProgress: function(progress) {
+			console.log(progress)
+		}
+	});
+	this.sendPrivateMessage(friendId, videoMessage);
+};
+
+IMService.prototype.sendPrivateAudioMessage = function(friendId, audiofile) {
+	let audioMessage = this.im.createAudioMessage({
+		file: audiofile,
+		onProgress: function(progress) {
+			console.log(progress)
+		}
+	});
+
+	this.sendPrivateMessage(friendId, audioMessage);
+};
+
+//发送私聊消息
+IMService.prototype.sendPrivateMessage = function(friendId, message) {
+	console.log(friendId, message)
+	//添加到消息中
+	let privateMessages = this.getPrivateMessages(friendId);
+	privateMessages.pendingMessages.push(message);
+
+	//发送
+	this.im.sendPrivateMessage(friendId, message)
+		.then((res) => {
+			console.log(res)
+		})
+		.catch(e => {
+			console.log(e)
+		})
+};
+
+IMService.prototype.markPrivateMessageAsRead = function(friendId) {
+	this.im.markPrivateMessageAsRead(friendId)
+		.then(res => {
+			console.log('标记为已读成功')
+		})
+		.catch(e => {
+			console.log(e)
+		})
+};
+
+IMService.prototype.disconnect = function() {
+	return this.im.disconnect()
+};
+
+IMService.prototype.latestConversations = function() {
+	let promise = this.im.latestConversations();
+	promise.then((conversations) => {
+		this.conversations = conversations
+	});
+	return promise
+};
+
+IMService.prototype.topPrivateConversation = function(userId, isTop) {
+	let promise = this.im.topPrivateConversation(userId, isTop);
+	promise.then(res => {
+		console.log(res)
+	}).catch(e => {
+		console.log(e)
+	});
+	return promise
+};
+
+IMService.prototype.removePrivateConversation = function(friendId) {
+	let promise = this.im.removePrivateConversation(friendId);
+	promise.then(res => {
+		console.log(res)
+	}).catch(e => {
+		console.log(e)
+	});
+	return promise
+};
+
+
+IMService.prototype.sendCustomMessage = function(id, type, options) {
+	let customMessage = this.im.createCustomMessage(options);
+	let promise = null;
+	if (type == 'private') {
+		promise = this.im.sendPrivateMessage(id, customMessage)
+	} else {
+		promise = this.im.sendGroupMessage(id, customMessage)
+	}
+	return promise
+};
+export default IMService;

Some files were not shown because too many files changed in this diff