>[danger]把环信SDK集成到vueCli中
----
1. [登录环信即时通信云]([https://www.easemob.com/](https://www.easemob.com/)), 注册一个应用, 得到key值
![](https://box.kancloud.cn/dbf99a7953e791bbe12331e7e95ae62b_1376x682.png)
2. vue项目中, 安装以下模块
`$ npm install --save easemob-websdk crypto-js underscore`
3. 在node_modules中配置代码
(1) easemob-websdk/src/connection.js
![](https://box.kancloud.cn/2bc0e1c929428b012f37347ce4b53c12_1371x566.png)
![](https://box.kancloud.cn/615d0b6913301ca071dd46e99df18454_1388x690.png)
![](https://box.kancloud.cn/999c9c6d4974c41a325cf0caff3b2de8_1360x658.png)
~~~
var meStrophe = require("../../strophe.js");
var Strophe = require("../../strophe.js").Strophe;
~~~
~~~
var config = {
xmppURL: 'im-api.easemob.com',
apiURL: (location.protocol === 'https:' ? 'https:' : 'http:') + '//a1.easemob.com',
appkey: '1135181219098181#shuangshenghuoyan',
https: false,
isMultiLoginSessions: true,
isAutoLogin: true,
isWindowSDK: false,
isSandBox: false,
isDebug: false,
autoReconnectNumMax: 2,
autoReconnectInterval: 2,
isWebRTC: (/Firefox/.test(navigator.userAgent) || /WebKit/.test(navigator.userAgent)) && /^https\:$/.test(window.location.protocol),
heartBeatWait: 4500,
isHttpDNS: false,
msgStatus: true,
delivery: true,
read: true,
saveLocal: false,
encrypt: {
type: 'none'
}
}
~~~
~~~
WebIM.config = config;
~~~
(2) strophe.js/dist/strophe.js
![](https://box.kancloud.cn/73288b78bd7cfc70e3947cdcfb1a6234_1403x722.png)
~~~
setJid: function (jid) {
this.jid = jid;
this.authzid = Strophe.getBareJidFromJid(this.jid);
this.authcid = Strophe.getNodeFromJid(this.jid);
},
getJid: function () {
return this.jid;
},
~~~
4. main.js中配置环信
~~~
/*****配置环信******/
// 1. 安装并引入环信SDK
import websdk from 'easemob-websdk'
let WebIM = window.WebIM = websdk;
Vue.prototype.WebIM = WebIM;
// 2. 创建连接
const conn = new WebIM.connection({
isMultiLoginSessions: WebIM.config.isMultiLoginSessions,
https: typeof WebIM.config.https === 'boolean' ? WebIM.config.https : location.protocol === 'https:',
url: WebIM.config.xmppURL,
heartBeatWait: WebIM.config.heartBeatWait,
autoReconnectNumMax: WebIM.config.autoReconnectNumMax,
autoReconnectInterval: WebIM.config.autoReconnectInterval,
apiUrl: WebIM.config.apiURL,
isAutoLogin: true
});
// 3. 把链接对象扩展给Vue实例属性(以后可以用this.myCon代表环信链接对象)
Vue.prototype.myCon = conn;
/*******配置环信结束***********/
~~~
5. store/index.js 设置业务代码
~~~
export default new Vuex.Store({
state: {
// 保存聊天数据
chatData: [
{
'type': "text",
"own": true,
"content": "晚上吃饭了嘛?"
},
{
'type': "text",
"own": false,
"content": "还没吃呢, 你准备请我吃点什么?"
},
{
'type': "text",
"own": true,
"content": "吃饭之前, 先念诗吧"
},
{
'type': "text",
"own": false,
"content": "\n" +
"人生若只如初见,何事秋风悲画扇。\n" +
"等闲变却故人心,却道故人心易变。\n" +
"骊山语罢清宵半,泪雨零铃终不怨。\n" +
"何如薄幸锦衣郎,比翼连枝当日愿。"
}
],
},
mutations: {
changeMessage(state, dataObj) {
state.chatData.push(dataObj);
}
},
actions: {
// 4. 注册发送消息, 监听事件
listenConnect({commit}, state) {
let conn = state;
conn.listen({
onOpened: function (message) {
// 连接成功回调
// 如果isAutoLogin设置为false,那么必须手动设置上线,否则无法收消息
// 手动上线指的是调用conn.setPresence(); 如果conn初始化时已将isAutoLogin设置为true, 则无需调用conn.setPresence();
},
onClosed: function (message) {
//连接关闭回调
},
onTextMessage: function (message) {
// 收到文本消息
// 注意对象key关键字和chat里要解析时用的key保持一致
commit('changeMessage', {
// 消息类型
'type': "text",
// 是否是自己发送的(false代表接收他人消息)
"own": false,
// 具体消息值
"content": message['data']
});
},
onEmojiMessage: function (message) {
//收到表情消息
},
onPictureMessage: function (message) {
//收到图片消息
},
onCmdMessage: function (message) {
//收到命令消息
},
onAudioMessage: function (message) {
//收到音频消息
},
onLocationMessage: function (message) {
//收到位置消息
},
onFileMessage: function (message) {
//收到文件消息
},
onVideoMessage: function (message) {
// 收到视频消息
let node = document.getElementById('privateVideo');
let option = {
url: message.url,
headers: {
'Accept': 'audio/mp4'
},
onFileDownloadComplete: function (response) {
// 文件下载完成
node.src = WebIM.utils.parseDownloadResponse.call(conn, response);
},
onFileDownloadError: function () {
// 文件下载错误
console.log('File down load error.')
}
};
WebIM.utils.download.call(conn, option);
},
onPresence: function (message) {
//处理“广播”或“发布-订阅”消息,如联系人订阅请求、处理群组、聊天室被踢解散等消息
},
onRoster: function (message) {
//处理好友申请
},
onInviteMessage: function (message) {
//处理群组邀请
},
onOnline: function () {
//本机网络连接成功
},
onOffline: function () {
//本机网络掉线
},
onError: function (message) {
//失败回调
},
onBlacklistUpdate: function (list) {
// 黑名单变动
// 查询黑名单,将好友拉黑,将好友从黑名单移除都会回调这个函数,list则是黑名单现有的所有好友信息
console.log(list);
},
onReceivedMessage: function (message) {
//收到消息送达服务器回执
},
onDeliveredMessage: function (message) {
//收到消息送达客户端回执
},
onReadMessage: function (message) {
//收到消息已读回执
},
onCreateGroup: function (message) {
//创建群组成功回执(需调用createGroupNew)
},
onMutedMessage: function (message) {
//如果用户在A群组被禁言,在A群发消息会走这个回调并且消息不会传递给群其它成员
}
// 其他方法见文档
});
},
// 5. 本地发送消息变更事件
async localMessageChange({commit}, state) {
commit('changeMessage', {
'type': "text",
"own": true,
"content": state
});
}
}
});
~~~
接着看 [环信_聊天组件](%E7%8E%AF%E4%BF%A1_%E8%81%8A%E5%A4%A9%E7%BB%84%E4%BB%B6.md)
- web前端
- CSS问题
- 布局
- 双飞翼布局_flex方式
- 双飞翼布局_margin方式
- 圣杯布局_flex方式
- 圣杯布局_margin方式
- 子元素居中问题
- 弹性布局
- 概念_
- 标准模式与混杂模式
- 各种FC
- line-height
- vertical-align
- CSS3新特性
- 效果
- div添加箭头
- CSS绘制三角形
- JavaScript
- 兼容
- 事件相关
- 原理
- Ajax原理
- 继承原理
- 原型链继承
- 组合继承
- 寄生组合继承
- 数据绑定
- 1单向数据绑定m到c到v
- 2伪双向数据绑定
- 3双向数据绑定
- socket.io
- 运行时
- this指向
- 0.1+0.2问题
- 对象/数组-深拷贝&浅拷贝
- 事件循环
- typeof
- instanceof
- 概念
- 闭包
- 回调函数
- Promise
- 原生对象
- Attribute和property区别
- 防抖函数
- 节流函数
- 语言类型
- Vue
- Vue优缺点
- 仿Vue源码
- 1数据绑定_Observe
- 2数据绑定_订阅者&观察者定义
- 3数据绑定_Vue类实现
- 4数据绑定_Vue访问data更改
- 5DOM编译_Compile_双大括号模板讲解
- 6DOM编译_v-model讲解
- 7DOM编译_v-on:事件绑定讲解
- 项目总结
- 使用Svg图标
- vueCli环境_真机测试
- vueCli集成环信SDK
- 父子组件双向绑定
- React
- React优缺点
- 我的组件库
- Vue的组件库
- 环信_聊天组件
- 面试题
- HTML_分类
- CSS_分类
- JavaScript_分类
- VueJS_分类
- ReactJS_分类
- AngularJS_分类
- 浏览器端
- 笔试题
- CSS
- 特殊布局
- JavaScript_
- 经典_宏任务_微任务
- 浏览器问题
- CORS
- web服务器
- Apache
- 开启跨域
- Nginx
- 常用命令
- 正向代理
- 反向代理
- 负载均衡
- mac安装Nginx
- 配置80端口
- 算法
- 冒泡排序
- 选择排序
- 合并对象_排序
- 杨辉三角
- 红黑树
- 计算机基础
- 网络相关
- OSI七层模型
- http协议
- http工作原理
- https协议
- GET和POST区别
- hosts文件
- php相关
- session机制
- Linux
- 阿里云服务器
- linux使用Mysql
- 安装mysql
- 导入.sql文件
- 远程连接mysql
- linux使用xampp
- 安装Xampp
- 配置web访问
- 域名绑定服务器
- linux搭建git服务器_apache下
- 代码管理
- 什么是git
- 命令行_使用git
- .gitignore文件讲解
- 软件
- VSCode的安装
- 理财
- 基金
- 摄影