基于融云实现聊天

日期:2016-5-10 13:51 | 标签: | 阅读:610

为什么用融云,免费啊!

服务端配置

打算基于nodejs测试,毕竟简单易用,成熟应用估计还是会基于Asp.net,这是公司的法宝。

  1. 引用node库:server-sdk-nodejs,这样就不要纠结于通用API 接口签名规则规则了。

客户端配置[demo]

  1. 登录后开始在全局监听消息发送事件
    RongCloudLibPlugin.setOnReceiveMessageListener(
         function(ret, err) {
           if (ret) {
             $rootScope.arrMsgs.push(JSON.stringify(ret.result.message));
             $rootScope.$apply();
           }
           if (err) {
             console.log('setOnReceiveMessageListener error:' + JSON.stringify(err));
           }
         }
    );
    
  2. 在全局控制器中监听arrMsgs

    var chMsg = function(newValue, oldValue) {
       if (newValue !== oldValue) {
          var jsonMsg = newValue.pop();
          if (typeof jsonMsg !== "undefined" && jsonMsg !== "undefined") {
              // 发布消息
              newMessageEventService.broadcast(jsonMsg);
          }
       }
     };
    // watch items的变化
     var listener = $rootScope.$watch('arrMsgs', chMsg, true); 
    
     $scope.curUID = $rootScope.curUID ? $rootScope.curUID : "";
    
     $scope.$on('$destroy', function() {
       //stop watching when scope is destroyed
       listener();
     });
    
  3. newMessageEventService对消息的订阅与发布进行简单的封装
    .service("newMessageEventService",function($rootScope) {
    var msgService = {
       broadcast: function(data) {$rootScope.$broadcast("newMsg", data)},
       listen: function(callback) {$rootScope.$on("newMsg",callback)}
    };
    return msgService;
    })
    
  4. 在聊天界面中订阅事件
    var newMsgCallBack = function(d,data){
       var jsonMsg = JSON.parse(data);
       if ($stateParams.targetId == jsonMsg.targetId) {
         clearMessagesUnreadStatus();
         var target;
         if(jsonMsg.conversationType == "PRIVATE"){
         }
         else if(jsonMsg.conversationType == "GROUP"){
         }
         else if(jsonMsg.conversationType == "CUSTOMER_SERVICE"){
         }
         else if(jsonMsg.conversationType == "CHATROOM"){
         }
         // myUtil辅助类,用于解析消息类型
         var tmpMsg = myUtil.resolveMsg(jsonMsg);
        // 绑定数据
         $scope.hisMsgs.push(tmpMsg);
         // 滚动至底部
         $ionicScrollDelegate.scrollBottom(true);
       }
     };
     newMessageEventService.listen(newMsgCallBack);
    

版权声明: 署名-非商业性使用-禁止演绎 4.0 国际(CC BY-NC-ND 4.0
Copyright ©2013-2017 | 粤ICP备14081691号 | yipeng手工打造 | 联系方式