IM_网易云信开发
一、项目目标
本项目完全依赖于第三方IM服务器网易云信进行IM开发。
网易云信(wyyx)能够满足产品基本所有的需求,本项目将所有的IM功能放到wyyx服务器上,本项目服务器需要将所有的聊天信息进行备份,及对用户聊天权限进行设置。
二、功能实现:
1、备份:使用wyyx的“消息抄送”功能,对所有的消息进行本地数据库备份
2、权限:使用wyyx的“第三方回调”功能,对所有的消息在操作之前进行权限设置,通过或是不通过,通过则wyyx执行,不通过则不执行。
三、具体实现:
wyyx提供“消息抄送”地址、“第三方回调”地址,都是使用http[method:post]方法进行调用,所以本服务只需要实现这两个接口。
另外,由于wyyx直接操作的是appKey、userid、token,所以需要本服务器申请userid对应的token提供给调用者。(此方法官网有,本文不提供)
1、消息抄送:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 { 2 "code": 0, 3 "eventType": "1", 4 "convType": "PERSON", 5 "to": "user2", 6 "fromAccount": "user1", 7 "fromClientType": "WEB", 8 "fromDeviceId": "f7aa3bce1709618cce3fec7d59ca6b1b", 9 "msgTimestamp": "1547018907635", 10 "msgType": "TEXT", 11 "body": "hello", 12 "msgidClient": "5fc6bf14d23530fb7a9aac6085626c38", 13 "msgidServer": "248907731075", 14 "resendFlag": "0" 15 }
本服务将此消息存入数据库
【注意】:消息会抄送多次或者消息会抄送失败,需要对此进行处理。
2、第三方回调
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 { 2 "code": 0, 3 "eventType": "1", 4 "to": "user2", 5 "fromAccount": "user1", 6 "fromClientType": "WEB", 7 "fromDeviceId": "e15b541366b36988ec58afa2721e1c57", 8 "msgTimestamp": "1547026664403", 9 "msgType": "TEXT", 10 "body": "hello", 11 "msgidClient": "60286e2dbab72b1216c8614ddb4209b2" 12 }
1 {"errCode":0}
errCode:0(0为通过,1位不通过)
利用第三方回调可以对消息发起者或是接受者,或是消息内容进行限制。
四、测试
本程序员使用web端测试。
方法一:
源码:直接上源码,就是暴力。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 <html> 2 <head></head> 3 <body> 4 <h1>云信 Web SDK Online Test</h1> 5 <div> 6 <p> 7 <span>APPKEY:</span> 8 <input type="text" id="appkey" value="439f4cb53f344c444a8aa7a82******"> 9 </p> 10 <p> 11 <span>ACCOUNT:</span> 12 <input type="text" id="account" value="userid"> 13 </p> 14 <p> 15 <span>TOKEN:</span> 16 <input type="text" id="token" value="65681ec32f24b28c00d58a1070******"> 17 </p> 18 <p> 19 <button id="connect-sdk">连接SDK</button> 20 </p> 21 </div> 22 <script src="http://yx-web.nos.netease.com/official/websdk/NIM_Web_SDK_v4.8.0.js"></script> 23 </body> 24 <script> 25 function connectSDK () { 26 var appkey = document.getElementById('appkey').value 27 var account = document.getElementById('account').value 28 var token = document.getElementById('token').value 29 window.nim = SDK.NIM.getInstance({ 30 appKey: appkey, 31 account: account, 32 token: token, 33 onconnect: function () { 34 alert('SDK 连接成功') 35 // 连接成功后才能发消息 36 window.nim.sendText({ 37 scene: 'p2p', 38 to: 'user2', 39 text: 'hello', 40 done: function sendMsgDone (msg) { 41 } 42 }) 43 }, 44 ondisconnect: function (obj) { 45 console.log('SDK 连接断开', obj) 46 }, 47 onerror: function (error) { 48 console.log('SDK 连接失败', error) 49 } 50 }) 51 } 52 53 document.getElementById('connect-sdk').addEventListener('click', function () { 54 connectSDK() 55 }) 56 </script> 57 </html>
需要更改3个地方:①第一个appkey请去官网申请②account③token,account与token是用户进行聊天的验证信息,可以通过网易云信提供的源码运行产生。
【注意】本html需要使用服务器才能提交业务。所以请不要直接打开html文件:file// 而应该是localhost:8080/这样的形式。
方法二:
使用官网提供的方法:https://github.com/netease-im/NIM_Web_Demo
步骤:
1、安装nodejs
2、打开文件NIM_Web_Demo-master,利用node的高效工具npm进行相关库的下载
npm install
node app
在浏览器中访问 http://127.0.0.1:8888/webdemo/index.html(访问成功说明配置正确)
3、修改NIM_Web_Demo-master\webdemo\im\js\config.js
online->appkey修改为个人的appkey
4、在网易云信官网“账号管理”新建账号
5、新建的账号在http://192.168.1.101:8182/webdemo/im/login.html登录
6、登录之后可以进行常规操作测试:p2p聊天、群聊、添加好友、创建群组、创建讨论组等