环信WebIM 超详细教程01:点对点单聊
环信WebIM 超详细教程01:点对点单聊
- 第一个单聊(点对点)Demo
- 前言
- 一,准备工作:注册-》登录-》创建应用-》创建应用用户
- 二,搭建工程,实现简单的单聊(点对点)功能
- 三,总结(人类的本质:复读机)
第一个单聊(点对点)Demo
前言
为什么会写这样一篇帖子?
起因是由于项目中用到了聊天功能所以听从前辈建议学习用第三方环信的技术来实现
而通过查看一些技术文档和环信官方的文档屡屡受挫(也可能是本人技术水平所限),这些文档和环信方面的官方文档写的都不是很详细只是点到即止,并不能让初学者快速上手,尤其是项目急的时候,我也是结合了一些前辈给的建议写出了单,群聊等功能,回想起自己百度查找资料时候的无力感,遂写了此贴。
- 本次只是针对点对点的单聊,而实现的简单demo
- 本次的目的只是帮初学者进行【扫盲】,有些配置没有用到,请自行查看官方文档
- 本篇是以傻瓜式新手教学为出发点,力求能用几小时快速入门环信的sdk,以解读者燃眉之急
- 内有大量图片请自行斟酌
- 如有转载请站内联系本人
- 登录功能在配置文件里默认为:isAutoLogin: true所以省去了手动登录conn.setPresence();
- 环信官网https://www.easemob.com/
一,准备工作:注册-》登录-》创建应用-》创建应用用户
1. 打开环信的登录注册页面:https://console.easemob.com/user/login
登录成功后进入控制台:
首先点击【创建IM应用】,注意: 这里只演示点对点【单聊】的简单DEMO
2. 【创建IM应用】页面:
appname:可以理解为创建应用的ID,唯一
Appkey:环信为你自动生成的一串唯一标识,用来区别应用
3. 应用创建好了,可以在控制台查看。之后点击应用进入应用控制台
可以看到左侧控制台信息改变了,右侧为当前应用的详细信息
4. 我们点击【IM用户】,可以看到,我们当前的应用是没有任何用户的,可以简单的理解为:现在有一款聊天软件,也就是我们创建的当前应用‘demo2’,但是还没有任何用户注册使用它,也就是说现在应用里最少要创建2个用户才能实现最基本的点对点单聊功能,现在我们点击【创建IM用户】来创建2个用户
我们创建两个用户,zhangsan(张三),lisi(李四),这里我的密码统一设定为:123456,图示创建
创建好两位用户后,为了之后调试信息时方便,统一将消息通知选项修改为【发送详情】
图示修改页面
OK用户创建完毕
5. 至此我们的准备工作就做完了,接下来我们将参考环信的官方文档来创建我们的点对点单聊demo。
二,搭建工程,实现简单的单聊(点对点)功能
1. 我们先去看看环信的官方文档是怎么说的:http://docs-im.easemob.com/im/web/intro/start
如图示:官方给了我们webIM的地址,不墨迹,直接去GitHub上下载最新的SDK包
GitHub:https://github.com/easemob/web-im
这里下载1.4以后的版本
下载之后我们可以看到,这是一个环信官方为我们创建好的完整版Demo工程,包括单聊,群聊,聊天室等全部的功能和详细的配置,不过我们现阶段用不上这些,只需要把核心js文件提取出来,哪些文件呢?我们继续去官方文档里看看
这里官方告诉我们的很明确,需要这几个js文件:
/sdk/dist/strophe-1.2.8.min.js、/sdk/dist/websdk-1.4.11.js、/demo/javascript/dist/webim.config.js
这里我加了jq的js,为了不出其他 “意外” 我将关联的js都加了进来,但核心的还是上述3个js
2. 使用sdk搭建单聊demo,构建思路
首先我们先构思一下,消息应该如何传递?平时用的微信,QQ等聊天软件的单聊(点对点)场景
依据这个思路我们先简单的写出前台页面:这里我用的 HBuilderX 这款编辑器写前端代码
【不考虑美观,我们使用原始标签快速构建一个符合思路的页面】
如上图所示我们构建出两个页面一个是zhangsan的发送与接收,另一个为lisi的
3. 实现页面
现在我们来实现我们写的页面,怎么做呢?还是去官方文档看
如图所示:我们先去修改webim.config.js文件里的配置,这里只需修改appkey为我们应用的appkey即可
接下来我们继续,配置文档弄好以后根据官方文档所述,我们进行IM的初始化
初始化第一步,创建连接:这里我们就复制代码即可
初始化第二部,添加回调函数:这里我们就复制代码,并简单的进行精简
这里我们拿zhangsan.js实现,lisi.js同理即可
在这里我们设置页面加载的时候就开始初始化
/*** zhangsan.js* 注意!尽量不要使用 alter 方法,这样会使连接中断 */
var conn = null;
var getMsg1 = '';//发送的消息
var getMsg2 = '';//接收的消息
$(function() {//创建连接:开启IM连接conn = new WebIM.connection({isMultiLoginSessions: WebIM.config.isMultiLoginSessions,url: WebIM.config.xmppURL,heartBeatWait: WebIM.config.heartBeatWait,autoReconnectNumMax: WebIM.config.autoReconnectNumMax,autoReconnectInterval: WebIM.config.autoReconnectInterval,apiUrl: WebIM.config.apiURL,isAutoLogin: true });//回调函数:开启监听(精简过后的代码)conn.listen({onOpened: function(message) {console.log('###Listen Success! You can used send###',message); },onClosed: function(message) {}, //连接关闭回调onTextMessage: function(message) {console.log('###收到了文本###',message);getMsg2 = $("#text02").val()+message.sourceMsg+'\n';$("#text02").val(getMsg2);}, //收到文本消息onError: function(message) {console.log('###失败回调###',message);}, //失败回调onReceivedMessage: function(message) {}, //收到消息送达服务器回执onDeliveredMessage: function(message) {}, //收到消息送达客户端回执onReadMessage: function(message) {} //收到消息已读回执});})
到这里,我们的初始化就算完成。接下来开始实现页面上第一步:【注册–登录】
注:从这里开始就不付官方文档图片,自行查看复制即可,我只贴出我的代码
前端登录注册:
<body>
<div style="height: 00px;width: 100%;float: left;"><div align="center" style="border: #000000 solid 1px; width: 200px;float: left;"><br /><input type="text" id="username" value="" placeholder="username" /><br /><br /><input type="text" id="password" value="" placeholder="password" /><br /><br /><input type="text" id="nickname" value="" placeholder="nikcname" /><br /><br /><button id="regist">注册</button></div><div align="center" style="border: #0088CC solid 1px; width: 200px;float: left;margin-left: 20px;"><br /><input type="text" id="username1" value="zhangsan" placeholder="username1" /><br /><br /><input type="text" id="password1" value="123456" placeholder="password1" /><br /><br /><button id="login">登录</button></div>
</div><div align="center" style="border: #0088CC solid 2px; width: 200px;float: left;margin-left: 500px;"><div align="center" style="border: #950B02 solid 5px;"><br /><input type="text" id="send" value="" placeholder="send"style="margin-top: 20px;" /><br /><br /><button id="sendMsg">发送消息给lisi</button></div><br /><h3>自己说的话</h3><textarea id="text01" style="height: 300px;"></textarea><br /><br />
</div><div align="center" style="border: #950B02 solid 2px; width: 200px;float: left;margin-left: 100px;"><div align="center" style="border: #0088CC solid 5px;"><br /><h3>消息来源:lisi</h3><br /></div><br /><h3>接收的对方消息</h3><textarea id="text02" style="height: 300px;"></textarea><br /><br />
</div>
</body><script type="text/javascript" src="sdk/jquery.min.js" charset="utf-8"></script><script type="text/javascript" src="sdk/webim.config.js"></script><script type="text/javascript" src="sdk/strophe-1.2.8.min.js"></script><script type="text/javascript" src="sdk/websdk-1.4.13.js"></script><script type="text/javascript" src="zhangsan.js"></script>
对应zhangsan.js
$("#regist").click(function() {console.log('###注册###');var myusername = $("#username").val();var mypassword = $("#password").val();var mynickname = $("#nickname").val();var options = {username: myusername, //环信用户名password: mypassword, //环信密码nickname: mynickname, //环信昵称appKey: WebIM.config.appkey,success: function(msg) {console.log('###注册成功###',msg);},error: function(msg) {console.log('###注册失败###',msg);},apiUrl: WebIM.config.apiURL};conn.registerUser(options);})$("#login").click(function() {console.log('###登录###');var myusername = $("#username1").val();var mypassword = $("#password1").val();var options = {apiUrl: WebIM.config.apiURL,user: myusername,//环信用户名pwd: mypassword,//环信密码appKey: WebIM.config.appkey,success: function(msg) {console.log('###登录成功###',msg);},error: function(msg) {console.log('###登录失败###',msg);}};conn.open(options);//该设置为手动上线conn.setPresence();})
进行测试:我们先进入环信的应用控制台,将已创建的2个用户先删除
OK!此时我们应用又回到没有用户null的状态
现在就开始测试
登录失败,因为我们还没有注册zhangsan这个用户到应用当中,下面开始【注册】
此时我们再回到环信IM应用的控制台,刷新下,如下图所示张三已经注册进来了
用同样的方法我们注册李四
注册完成,接下来我们在进行登录试试
登录成功,我们去控制台看看,如图示,我们看到了已经登录成功了
此时我们可以在控制台模拟一条消息发送给用户zhangsan,看看能不能接收到消息
可以看到我们已经接收到了控制台的消息,from(发送者):为admin就是我们管理员,sourceMsg:为消息内容,to:代表我们接收方,就是用户zhangsan
到这里已经完成了一个简单的接收,接下来实现发送功能,同样参考官方文档
//发送消息$("#sendMsg").click(function(){var txt = $("#send").val();var id = conn.getUniqueId(); // 生成本地消息idvar msg = new WebIM.message('txt', id); // 创建文本消息msg.set({msg: txt, // 消息内容to: 'lisi', // 接收消息对象(用户id)roomType: false, success: function (id, serverMsgId) {console.log('###消息发送成功###',msg);},fail: function(e){console.log('###消息发送失败###');}});msg.body.chatType = 'singleChat';conn.send(msg.body);getMsg1 = $("#text01").val()+txt+'\n';$("#text01").val(getMsg1);})
先登录zhangsan和lisi
zhangsan发送一条消息给lisi
发送成功,我们去lisi的页面看看
很好lisi接收到了zhangsan 的消息,现在lisi要回复一句话给zhangsan
发送成功,我们再切回zhangsan的页面去看看
这时zhangsan也接收到了lisi回复的信息
OK至此我们大功告成了!
三,总结(人类的本质:复读机)
- 本次只是针对点对点的单聊,而实现的简单demo
- 本次的目的只是帮初学者进行【扫盲】,有些配置没有用到,请自行查看官方文档
- 登录功能在配置文件里默认为:isAutoLogin: true所以省去了手动登录conn.setPresence();
- 由于本人技术水平有限,其中不可避免有纰漏(请大家见谅)亦或者错误,如有大佬请帮忙改正
- 时间富裕的话以后还会更一下聊天室的功能,也许吧。。。。。。。
- 之后跟环信官方客服和我沟通了一下,得到的消息是官方文档是后台程序员写的,所以有一些地方避免不了
犯了我们程序员的通病,对客户使用的体验可能做得不好,而客服也说了他们现在也正在着手重新整理官方文档,这也是一种责任的体现吧! - demo工程链接:https://pan.baidu.com/s/10rXFlBl1tR7e9ttR3RlP1A 提取码:4aga
- 2020/02/20 十分抱歉 由于demo工程年代久远 而且我的办公地点几经变更,源文件和网盘文件已经丢失,但是能看完这篇博文的相信我,绝对能自己打出来
环信WebIM 超详细教程01:点对点单聊相关推荐
- 安卓开发环信即时通信,聊天软件-可实现单聊群聊
最近花了一个星期的时间在B站跟着老师学了环信即时聊天工具的使用 附上学习网站:https://www.bilibili.com/video/BV1cW411V7yd?p=1 附上自己的代码 https ...
- 安装64位Oracle 10g超详细教程
安装64位Oracle 10g超详细教程 1. 安装准备阶段 1.1 安装Oracle环境 经过上一篇博文的过程,已经完成了对Linux系统的安装,本例使用X-Manager来实现与Linux系统的连 ...
- 二进制安装部署 4 kubernetes集群---超详细教程
二进制安装部署kubernetes集群---超详细教程 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建完成后整理的个人心得,分享给大家~~~ 本文所需的安装包,都上传在我的网盘中,需要的可以 ...
- 【K8S实战】-超详细教程(三)
[K8S实战]-超详细教程(三) 1.存储 1.1.nfs默认存储 我这里只演示nfs作为K8S的默认存储,其他的可以看这里[存储类]. 1.1.1.安装nfs服务 所有机器都安装nfs工具 所有机器 ...
- 大数据平台Ambari2.7.4+HDP3.1.4安装(超详细教程)
大数据平台Ambari2.7.4+HDP3.1.4安装(超详细教程) Ambari2.7.4+HDP3.1.4是最后一个免费版本,新版本需要授权. 因工作需要,安装大数据集群,了解到Ambari属于A ...
- 10分钟教你用python打造贪吃蛇超详细教程
更多精彩尽在微信公众号[程序猿声] 10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来 ...
- 大疆无人机空三建模干货分享(大疆智图集群建模超详细教程)
Part 01 大疆无人机空三建模干货分享(大疆智图集群建模超详细教程) 大疆智图集群简介 大疆在今年5月推出的智图3.0.0及以上版本中加入了集群功能,有集群版许可的用户可以使用此功能.智图集群是由 ...
- 从无到有 Ubuntu16.04 18.04 20.04安装+Todesk+Chrome+NVIDIA驱动+CUDA+Cudnn+Anaconda3+Pycharm 超详细教程+踩坑问题
从无到有 Ubuntu16.04 18.04 20.04安装+Todesk+Chrome+NVIDIA驱动+CUDA+Cudnn+Anaconda3+Pycharm 超详细教程+踩坑问题(有部分图片忘 ...
- 手把手带你入门前端工程化——超详细教程(高级前端必备)
本文将分成以下 7 个小节: 技术选型 统一规范 测试 部署 监控 性能优化 重构 部分小节提供了非常详细的实战教程,让大家动手实践. 另外我还写了一个前端工程化 demo 放在 github 上.这 ...
最新文章
- k均值聚类算法考试例题_一文读懂K-means聚类算法
- html和css入门 (三)
- Spark性能优化:对RDD持久化或CheckPoint操作
- 【php】用filter_var实现的简单参数验证
- 基于mykernel完成多进程的简单内核
- 有没有一个永久储存数据的地方?
- java实现支付宝第三方登录_Java 实现QQ第三方登录(附赠:完整代码)
- AppDelegate文件下各方法的用法:(应用程序挂起、复原与终止)
- HHL,AL;非结合朱顶红凝集素(HHL,AL)
- 坐火车硬座20小时是怎样的体验?
- “扣哒杯” AI世青赛全国决赛落幕 集体奖和一等奖附加赛名单揭晓
- 葵花宝典第一招:唐氏均线成交量参数
- Python编程从入门到实践第五章部分习题
- iOS各版本发布时间和特点
- margin-left:-100%
- (附源码)springboot美食分享系统 毕业设计 612231
- 大数据专业应该怎么学习
- 百度、阿里、小米决战智能音箱
- 聚美优品店庆nbsp;从天堂到地狱
- Greenplum数据库源码学习——FTS简介