beelink/dist/js/iminit.js
2020-12-03 16:33:28 +08:00

305 lines
11 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

let options = {
SDKAppID: 1400435767 // 接入时需要将0替换为您的即时通信 IM 应用的 SDKAppID
};
window.tim = TIM.create(options);
tim.setLogLevel(0);
function getname(id){
return new Promise((res, rej)=>{
let promise = tim.getGroupMemberProfile({
groupID:window.roomid,
userIDList:[id],
memberCustomFieldFilter:["nick"]
})
promise.then(function(imResponse) {
console.log(imResponse.data.memberList); // 群成员列表
res(imResponse.data.memberList[0].nick)
}).catch(function(imError) {
console.warn('getGroupMemberProfile error:', imError);
setTimeout(()=>{
getname(id).then((e)=>{
res(e)
})
},1000)
});
})
}
function getgrouplist(){
let promise = tim.getGroupOnlineMemberCount(window.roomid);
promise.then(function(imResponse) {
console.log(imResponse.data.memberCount);
if(imResponse.data.memberCount < 3){
$(".video-box").eq(0).css("grid-area","1/1/3/5")
$(".liaotian").css("grid-area","3/1/4/5")
}else{
$(".video-box").eq(0).css("grid-area","1/1/3/4")
$(".liaotian").css("grid-area","3/1/4/4")
}
}).catch(function(imError) {
console.warn('getGroupOnlineMemberCount error:', imError); // 获取直播群在线人数失败的相关信息
});
}
function formatDateTime (inputTime) {
inputTime = inputTime * 1000
var date = new Date(inputTime);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? ('0' + m) : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
var h = date.getHours();
h = h < 10 ? ('0' + h) : h;
var minute = date.getMinutes();
var second = date.getSeconds();
minute = minute < 10 ? ('0' + minute) : minute;
second = second < 10 ? ('0' + second) : second;
return h + ':' + minute + ':' + second;
}
tim.on(TIM.EVENT.MESSAGE_RECEIVED, function(event) {
// 收到推送的单聊、群聊、群提示、群系统通知的新消息,可通过遍历 event.data 获取消息列表数据并渲染到页面
// event.name - TIM.EVENT.MESSAGE_RECEIVED
// event.data - 存储 Message 对象的数组 - [Message]
console.log(event.data)
for(let i in event.data){
if(!event.data[i].payload.text){
break;
}
if(event.data[i].payload.text.includes("beelinkMuteUserId") || event.data[i].payload.text.includes("inkTurnOffTheCameraUserId")){
break;
}
const list = $("#liaotianliebiao")
const html = ` <div>
<p>${formatDateTime(event.data[i].time)}</p>
<p><span>${event.data[i].nick}:</span>${event.data[i].payload.text}</p>
</div>`
list.append(html)
}
});
tim.on(TIM.EVENT.MESSAGE_REVOKED, function(event) {
// 收到消息被撤回的通知
// event.name - TIM.EVENT.MESSAGE_REVOKED
// event.data - 存储 Message 对象的数组 - [Message] - 每个 Message 对象的 isRevoked 属性值为 true
});
tim.on(TIM.EVENT.MESSAGE_READ_BY_PEER, function(event) {
// SDK 收到对端已读消息的通知,即已读回执。使用前需要将 SDK 版本升级至 v2.7.0 或以上。仅支持单聊会话。
// event.name - TIM.EVENT.MESSAGE_READ_BY_PEER
// event.data - event.data - 存储 Message 对象的数组 - [Message] - 每个 Message 对象的 isPeerRead 属性值为 true
});
tim.on(TIM.EVENT.CONVERSATION_LIST_UPDATED, function(event) {
// 收到会话列表更新通知,可通过遍历 event.data 获取会话列表数据并渲染到页面
// event.name - TIM.EVENT.CONVERSATION_LIST_UPDATED
// event.data - 存储 Conversation 对象的数组 - [Conversation]
});
tim.on(TIM.EVENT.GROUP_LIST_UPDATED, function(event) {
console.log(event.data)
// 收到群组列表更新通知,可通过遍历 event.data 获取群组列表数据并渲染到页面
// event.name - TIM.EVENT.GROUP_LIST_UPDATED
// event.data - 存储 Group 对象的数组 - [Group]
});
tim.on(TIM.EVENT.PROFILE_UPDATED, function(event) {
// 收到自己或好友的资料变更通知
// event.name - TIM.EVENT.PROFILE_UPDATED
// event.data - 存储 Profile 对象的数组 - [Profile]
});
tim.on(TIM.EVENT.BLACKLIST_UPDATED, function(event) {
// 收到黑名单列表更新通知
// event.name - TIM.EVENT.BLACKLIST_UPDATED
// event.data - 存储 userID 的数组 - [userID]
});
tim.on(TIM.EVENT.ERROR, function(event) {
// 收到 SDK 发生错误通知,可以获取错误码和错误信息
// event.name - TIM.EVENT.ERROR
// event.data.code - 错误码
// event.data.message - 错误信息
});
tim.on(TIM.EVENT.SDK_NOT_READY, function(event) {
// 收到 SDK 进入 not ready 状态通知,此时 SDK 无法正常工作
// event.name - TIM.EVENT.SDK_NOT_READY
});
tim.on(TIM.EVENT.KICKED_OUT, function(event) {
console.log("用户下线")
// 收到被踢下线通知
// event.name - TIM.EVENT.KICKED_OUT
// event.data.type - 被踢下线的原因,例如:
// - TIM.TYPES.KICKED_OUT_MULT_ACCOUNT 多实例登录被踢
// - TIM.TYPES.KICKED_OUT_MULT_DEVICE 多终端登录被踢
// - TIM.TYPES.KICKED_OUT_USERSIG_EXPIRED 签名过期被踢 v2.4.0起支持)。
});
tim.on(TIM.EVENT.NET_STATE_CHANGE, function(event) {
// 网络状态发生改变v2.5.0 起支持)。
// event.name - TIM.EVENT.NET_STATE_CHANGE
// event.data.state 当前网络状态,枚举值及说明如下:
// \- TIM.TYPES.NET_STATE_CONNECTED - 已接入网络
// \- TIM.TYPES.NET_STATE_CONNECTING - 连接中。很可能遇到网络抖动SDK 在重试。接入侧可根据此状态提示“当前网络不稳定”或“连接中”
// \- TIM.TYPES.NET_STATE_DISCONNECTED - 未接入网络。接入侧可根据此状态提示“当前网络不可用”。SDK 仍会继续重试若用户网络恢复SDK 会自动同步消息
});
genTestUserSig(window.mid).then((res)=>{
tim.login({userID: window.mid, userSig: res.data}).then(function(imResponse) {
console.log(imResponse.data); // 登录成功
if (imResponse.data.repeatLogin === true) {
// 标识账号已登录本次登录操作为重复登录。v2.5.1 起支持
console.log(imResponse.data.errorInfo);
}
}).catch(function(imError) {
console.warn('login error:', imError); // 登录失败的相关信息
});
})
tim.on(TIM.EVENT.SDK_READY, function (){
tim.updateMyProfile({
nick: window.uname
});
const promise = tim.createGroup({
type: TIM.TYPES.GRP_AVCHATROOM,
name: 'live',
groupID: window.roomid
});
promise.then(function(imResponse) { // 创建成功
console.log(imResponse.data.group); // 创建的群的资料
tim.joinGroup({
groupID: window.roomid,
type: TIM.TYPES.GRP_AVCHATROOM
}).then((res)=>{
switch (res.data.status) {
case TIM.TYPES.JOIN_STATUS_WAIT_APPROVAL: // 等待管理员同意
break;
case TIM.TYPES.JOIN_STATUS_SUCCESS: // 加群成功
console.log(res.data.group); // 加入的群组资料
break;
case TIM.TYPES.JOIN_STATUS_ALREADY_IN_GROUP: // 已经在群中
break;
default:
break;
}
setInterval(() => {
getgrouplist()
}, 2000);
}).catch((err)=>{
console.log(err)
})
}).catch(function(imError) {
console.warn('createGroup error:', imError); // 创建群组失败的相关信息
tim.joinGroup({
groupID: window.roomid,
type: TIM.TYPES.GRP_AVCHATROOM
}).then((res)=>{
switch (res.data.status) {
case TIM.TYPES.JOIN_STATUS_WAIT_APPROVAL: // 等待管理员同意
break;
case TIM.TYPES.JOIN_STATUS_SUCCESS: // 加群成功
console.log(res.data.group); // 加入的群组资料
break;
case TIM.TYPES.JOIN_STATUS_ALREADY_IN_GROUP: // 已经在群中
break;
default:
break;
}
setInterval(() => {
getgrouplist()
}, 2000);
}).catch((err)=>{
console.log(err)
})
});
function sendtext(text){
const m = tim.createTextMessage({
to: window.roomid,
conversationType: TIM.TYPES.CONV_GROUP,
payload: {
text: text
}
})
const promise = tim.sendMessage(m);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
const list = $("#liaotianliebiao")
const html = ` <div>
<p>${formatDateTime(imResponse.data.message.time)}</p>
<p><span>${window.uname}:</span>${imResponse.data.message.payload.text}</p>
</div>`
console.log(html)
list.append(html)
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
}
$(()=>{
$("#fasongxiaoxi").click(()=>{
const text = $("#shurukuang").val()
console.log(text)
sendtext(text)
$("#shurukuang").val("")
})
$("#shurukuang").keyup(function(event){
if(event.keyCode ==13){
//这里填写你要做的事件
//TODO
const text = $("#shurukuang").val()
console.log(text)
sendtext(text)
$("#shurukuang").val("")
}
});
})
});
function sendjinyan(id,type){
const m = tim.createTextMessage({
to: window.roomid,
conversationType: TIM.TYPES.CONV_GROUP,
payload: {
text: `beelinkMuteUserId:${id},isClose:${type}`
}
})
const promise = tim.sendMessage(m);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
}
function sendsx(id,type){
const m = tim.createTextMessage({
to: window.roomid,
conversationType: TIM.TYPES.CONV_GROUP,
payload: {
text: `beelinkTurnOffTheCameraUserId:${id},isClose:${type}`
}
})
const promise = tim.sendMessage(m);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
}
// 开始登录