IM_网易云信开发

IM_网易云信开发

一、项目目标

本项目完全依赖于第三方IM服务器网易云信进行IM开发。

网易云信(wyyx)能够满足产品基本所有的需求,本项目将所有的IM功能放到wyyx服务器上,本项目服务器需要将所有的聊天信息进行备份,及对用户聊天权限进行设置。

二、功能实现:

1、备份:使用wyyx的“消息抄送”功能,对所有的消息进行本地数据库备份

2、权限:使用wyyx的“第三方回调”功能,对所有的消息在操作之前进行权限设置,通过或是不通过,通过则wyyx执行,不通过则不执行。

三、具体实现:

wyyx提供“消息抄送”地址、“第三方回调”地址,都是使用http[method:post]方法进行调用,所以本服务只需要实现这两个接口。

另外,由于wyyx直接操作的是appKey、userid、token,所以需要本服务器申请userid对应的token提供给调用者。(此方法官网有,本文不提供)

1、消息抄送:

 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、第三方回调

 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端测试。

方法一:

源码:直接上源码,就是暴力。

 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>
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-masterwebdemoimjsconfig.js

  online->appkey修改为个人的appkey

4、在网易云信官网“账号管理”新建账号

5、新建的账号在http://192.168.1.101:8182/webdemo/im/login.html登录

6、登录之后可以进行常规操作测试:p2p聊天、群聊、添加好友、创建群组、创建讨论组等

原文地址:https://www.cnblogs.com/carsonwuu/p/10245710.html