initNimSDK.js
4.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/*
* SDK连接相关
*/
import config from '@/configs'
import pageUtil from '@/utils/page'
import util from '@/utils'
import store from '../'
import {onFriends, onSyncFriendAction} from './friends'
import {onRobots} from './robots'
import {onBlacklist, onMarkInBlacklist} from './blacks'
import {onMyInfo, onUserInfo} from './userInfo'
import {onSessions, onUpdateSession} from './session'
import {onRoamingMsgs, onOfflineMsgs, onMsg} from './msgs'
import {onSysMsgs, onSysMsg, onSysMsgUnread, onCustomSysMsgs} from './sysMsgs'
import {onTeams, onSynCreateTeam, onCreateTeam, onUpdateTeam, onTeamMembers, onUpdateTeamMember, onAddTeamMembers, onRemoveTeamMembers, onUpdateTeamManagers, onDismissTeam, onUpdateTeamMembersMute} from './team'
const SDK = require('@/sdk/' + config.sdk)
// 重新初始化 NIM SDK
export function initNimSDK ({ state, commit, dispatch }, loginInfo) {
if (state.nim) {
state.nim.disconnect()
}
dispatch('showLoading')
// 初始化SDK
window.nim = state.nim = SDK.NIM.getInstance({
// debug: true && { api: 'info', style: 'font-size:12px;color:blue;background-color:rgba(0,0,0,0.1)' },
appKey: config.appkey,
account: loginInfo.uid,
token: loginInfo.sdktoken,
db: false,
syncSessionUnread: true,
syncRobots: true,
autoMarkRead: true, // 默认为true
onconnect: function onConnect (event) {
if (loginInfo) {
// 连接上以后更新uid
commit('updateUserUID', loginInfo)
}
},
onerror: function onError (event) {
debugger;
location.href = cookie.readCookie('userHref')
},
onwillreconnect: function onWillReconnect () {
console.log(event)
},
ondisconnect: function onDisconnect (error) {
switch (error.code) {
// 账号或者密码错误, 请跳转到登录页面并提示错误
case 302:
pageUtil.turnPage('帐号或密码错误', 'login')
break
// 被踢, 请提示错误后跳转到登录页面
case 'kicked':
let map = {
PC: '电脑版',
Web: '网页版',
Android: '手机版',
iOS: '手机版',
WindowsPhone: '手机版'
}
let str = error.from
let errorMsg = `你的帐号于${util.formatDate(new Date())}被${(map[str] || '其他端')}踢出下线,请确定帐号信息安全!`
pageUtil.turnPage(errorMsg, 'login')
break
default:
break
}
},
// // 多端登录
// onloginportschange: onLoginPortsChange,
// 用户关系及好友关系
onblacklist: onBlacklist,
onsyncmarkinblacklist: onMarkInBlacklist,
// onmutelist: onMutelist,
// onsyncmarkinmutelist: onMarkInMutelist,
onfriends: onFriends,
onsyncfriendaction: onSyncFriendAction,
// 机器人
onrobots: onRobots,
// 用户名片 - actions/userInfo
onmyinfo: onMyInfo,
onupdatemyinfo: onMyInfo,
onusers: onUserInfo,
onupdateuser: onUserInfo,
// // 群组
onteams: onTeams,
onsynccreateteam: onSynCreateTeam,
syncTeams: true,
onteammembers: onTeamMembers,
onCreateTeam: onCreateTeam,
onDismissTeam: onDismissTeam,
onUpdateTeam: onUpdateTeam,
onAddTeamMembers: onAddTeamMembers,
onRemoveTeamMembers: onRemoveTeamMembers,
onUpdateTeamManagers: onUpdateTeamManagers,
onupdateteammember: onUpdateTeamMember,
onUpdateTeamMembersMute: onUpdateTeamMembersMute,
// // 会话
onsessions: onSessions,
onupdatesession: onUpdateSession,
// // 消息
onroamingmsgs: onRoamingMsgs,
onofflinemsgs: onOfflineMsgs,
onmsg: onMsg,
// // 系统通知
onsysmsg: onSysMsg,
onofflinesysmsgs: onSysMsgs,
onupdatesysmsg: onSysMsg, // 通过、拒绝好友申请会收到此回调
onsysmsgunread: onSysMsgUnread,
onupdatesysmsgunread: onSysMsgUnread,
onofflinecustomsysmsgs: onCustomSysMsgs,
oncustomsysmsg: onCustomSysMsgs,
// // 同步完成
onsyncdone: function onSyncDone () {
dispatch('hideLoading')
// 说明在聊天列表页
if (store.state.currSessionId) {
dispatch('setCurrSession', store.state.currSessionId)
}
}
})
}