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>
需要更改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聊天、群聊、添加好友、創建群組、創建討論組等