环信即时通讯云

实时聊天的话环信还是不错的,前端如何快速看懂环信的开发文档,
环信开发文档地址:http://docs.easemob.com/im/400webimintegration/30singlechat
这里主要是Web IM集成
其实非常简单,前端要做的就是调用环信的方法:首先先上回调后的代码,也就是当你使用的环信的某个方法 那么你想要的数据就在一下的回调函数里

<script>
        /**
         * Created by clock on 16-11-25.
         */
        var conn = {};
        conn = new WebIM.connection({
            isMultiLoginSessions: WebIM.config.isMultiLoginSessions,
            https: typeof WebIM.config.https === 'boolean' ? WebIM.config.https : location.protocol === 'https:',
            url: WebIM.config.xmppURL,
            isAutoLogin: true,
            heartBeatWait: WebIM.config.heartBeatWait,
            autoReconnectNumMax: WebIM.config.autoReconnectNumMax,
            autoReconnectInterval: WebIM.config.autoReconnectInterval,
            apiUrl: WebIM.config.apiURL
        });
console.log(conn);
        // listern,添加回调函数
        conn.listen({
            onOpened: function (message) {          //连接成功回调,连接成功后才可以发送消息
                //如果isAutoLogin设置为false,那么必须手动设置上线,否则无法收消息
                // 手动上线指的是调用conn.setPresence(); 在本例中,conn初始化时已将isAutoLogin设置为true
                // 所以无需调用conn.setPresence();
                console.log(message);
                console.log("%c [opened] 连接已成功建立", "color: green")
            },
            onTextMessage: function (message) {

                var description = "";
                for(var i in message){
                    var property=message[i];
                    description+=i+" = "+property+"\n";
                }
                alert(description);
                // 在此接收和处理消息,根据message.type区分消息来源,私聊或群组或聊天室
        console.log('fhfhf',description);
                console.log(message);
                console.log(message.type);
                console.log('Text');
            },  //收到文本消息
            onEmojiMessage: function (message) {
                // 当为WebIM添加了Emoji属性后,若发送的消息含WebIM.Emoji里特定的字符串,connection就会自动将
                // 这些字符串和其它文字按顺序组合成一个数组,每一个数组元素的结构为{type: 'emoji(或者txt)', data:''}
                // 当type='emoji'时,data表示表情图像的路径,当type='txt'时,data表示文本消息
                console.log('Emoji');
                var data = message.data;
                for (var i = 0, l = data.length; i < l; i++) {
                    console.log(data[i]);
                }
            },   //收到表情消息
            onPictureMessage: function (message) {
                console.log('Picture');

                var options = {url: message.url};
                options.onFileDownloadComplete = function () {
                    // 图片下载成功
                    console.log('Image download complete!');
                };
                options.onFileDownloadError = function () {
                    // 图片下载失败
                    console.log('Image download failed!');
                };
                WebIM.utils.download.call(conn, options);       // 意义待查

            }, //收到图片消息
            onCmdMessage: function (message) {
                console.log('CMD');
            },     //收到命令消息
            onAudioMessage: function (message) {
                console.log("Audio");
            },   //收到音频消息
            onLocationMessage: function (message) {
                console.log("Location");
            },//收到位置消息
            onFileMessage: function (message) {
                console.log("File");
            },    //收到文件消息
            onVideoMessage: function (message) {
                var node = document.getElementById('privateVideo');
                var option = {
                    url: message.url,
                    headers: {
                        'Accept': 'audio/mp4'
                    },
                    onFileDownloadComplete: function (response) {
                        var objectURL = WebIM.utils.parseDownloadResponse.call(conn, response);
                        node.src = objectURL;
                    },
                    onFileDownloadError: function () {
                        console.log('File down load error.')
                    }
                };
                WebIM.utils.download.call(conn, option);
            },   //收到视频消息
            onPresence: function (message) {
                switch (message.type) {
                    case 'subscribe':                           // 对方请求添加好友
                        // 同意对方添加好友
                        document.getElementById('agreeFriends').onclick = function (message) {
                            conn.subscribed({
                                to: 'lisi',
                                message: "[resp:true]"
                            });
                        };
                        // 拒绝对方添加好友
                        document.getElementById('rejectFriends').onclick = function (message) {
                            conn.unsubscribed({
                                to: message.from,
                                message: "rejectAddFriend"                  // 拒绝添加好友回复信息
                            });
                        };

                        break;
                    case 'subscribed':                          // 对方同意添加好友,已方同意添加好友
                        break;
                    case 'unsubscribe':                         // 对方删除好友
                        break;
                    case 'unsubscribed':                        // 被拒绝添加好友,或被对方删除好友成功
                        break;
                    case 'memberJoinPublicGroupSuccess':                 // 成功加入聊天室
                        console.log('join chat room success');
                        break;
                    case 'joinChatRoomFaild':                   // 加入聊天室失败
                        console.log('join chat room faild');
                        break;
                    case 'joinPublicGroupSuccess':              // 意义待查
                        console.log('join public group success', message.from);
                        break;
                    case 'createGroupACK':
                        conn.createGroupAsync({
                            from: message.from,
                            success: function (option) {
                                console.log('Create Group Succeed');
                            }
                        });
                        break;
                }
            },       //收到联系人订阅请求(加好友)、处理群组、聊天室被踢解散等消息
            onRoster: function (message) {
                console.log('Roster');
            },         //处理好友申请
            onInviteMessage: function (message) {
                console.log('Invite');
            },  //处理群组邀请
            onOnline: function () {
                console.log('onLine');
            },                  //本机网络连接成功
            onOffline: function () {
                console.log('offline');
            },                 //本机网络掉线
            onError: function (message) {
                console.log('Error');
                console.log(message);
                if (message && message.type == 1) {
                    console.warn('连接建立失败!请确认您的登录账号是否和appKey匹配。')
                }
            },           //失败回调
            onBlacklistUpdate: function (list) {
                // 查询黑名单,将好友拉黑,将好友从黑名单移除都会回调这个函数,list则是黑名单现有的所有好友信息
                console.log(list);
            }     // 黑名单变动
        });
        // 初始化WebRTC Call
        var rtcCall = null
        if (WebIM.WebRTC) {
            rtcCall = new WebIM.WebRTC.Call({
                connection: conn,

                mediaStreamConstaints: {
                    audio: true,
                    video: true
                },

                listener: {
                    onAcceptCall: function (from, options) {
                        console.log('onAcceptCall::', 'from: ', from, 'options: ', options);
                    },
                    onGotRemoteStream: function (stream, streamType) {
                        console.log('onGotRemoteStream::', 'stream: ', stream, 'streamType: ', streamType);
                        var video = document.getElementById('video');
                        video.srcObject = stream;
                    },
                    onGotLocalStream: function (stream, streamType) {
                        console.log('onGotLocalStream::', 'stream:', stream, 'streamType: ', streamType);
                        var video = document.getElementById('localVideo');
                        video.srcObject = stream;
                    },
                    onRinging: function (caller) {
                        console.log('onRinging::', 'caller:', caller);
                    },
                    onTermCall: function (reason) {
                        console.log('onTermCall::');
                        console.log('reason:', reason);
                    },
                    onIceConnectionStateChange: function (iceState) {
                        console.log('onIceConnectionStateChange::', 'iceState:', iceState);
                    },
                    onError: function (e) {
                        console.log(e);
                    }
                }
            });
        } else {
            console.warn('不能进行视频通话!您的浏览器不支持webrtc或者协议不是https。')
        }



    script>

接下来在写一个调用环信的方法:

  <script>

        //注册用户  不修改用户名称第二次报错  已存在用户
        var register = function () {
            var option = {
                username: 'bossffffsasdfasgrewgeg',
                password: '123456',
                nickname: 'clock',
                appKey: WebIM.config.appkey,
                success: function (data) {
                    console.log(data);
                    console.log('regist success!');
                },
                error: function () {
                    console.log('regist error');
                },
                apiUrl: WebIM.config.apiURL
            };
            conn.signup(option);
        };

        /*登录*/
        var options = {
            apiUrl: WebIM.config.apiURL,
            user: '218',
            pwd: '123456',
            appKey: WebIM.config.appkey
        };
        conn.open(options);

        // 私聊发送文本消息,发送表情同发送文本消息,只是会在对方客户端将表情文本进行解析成图片  218和lisi为好友,不是好友关系发送失败
        var sendPrivateText = function () {
            var id = conn.getUniqueId();
            var msg = new WebIM.message('txt', id);
            msg.set({
                msg: 'scarecrow', // 消息内容
                to: 'lisi', // 接收消息对象
                roomType: false,
                success: function (id, serverMsgId) {
                    console.log("send private text Success");
                }
            });
            msg.body.chatType = 'singleChat';
            conn.send(msg.body);
        };
        script>
        <div>
              <button id="register">注册button>
               <button id="privateText">发送文本(表情也用这个)button>
        div>

以上是小例子,通过点击注册按钮走注册用户的方法,用户注册成功一定要登录 不然没法聊天,然后点击发送文本按钮走sendPrivateText方法,此方法成功函数里边走的是回调 onTextMessage 这个函数 里边就是回调的数据也就是我们要获取的对方的聊天内容,无论是单聊还是群聊都是这个回调函数,只是点击时候走的方法不一样而已,很重要的有点就是引js的顺序不能乱了:

     <script type='text/javascript' src='webim.config.js'>script>
    <script type='text/javascript' src='strophe-1.2.8.min.js'>script>
    <script type='text/javascript' src='websdk-1.4.13.js'>script>

还不太会git所以整体的例子还有js没法上传~~对不起 担忧 犯错 抱歉,但是可以去 环信官方找到例子 里边都有所需要的js

你可能感兴趣的:(环信)