在angularjs聊天应用程序中获取消息而不刷新。

时间:2017-07-28 05:23:35

标签: php angularjs codeigniter

我正在使用angularjs 1.5.5和codeigniter 3.0。

当我将消息从一个用户发送到另一个用户离线时它工作正常但在上传项目后我才知道它无法正常工作,因为接收者在向发送者发送一些消息时收到了消息。

$scope.sendSenderMessage = function(bsid,srid,message)

 {
    //bsid is sender id while srid is receiver id
    $http.post(url + 'c_chat/sendSenderMessageJson', {
      'bsid'    : bsid ,
      'srid'    : srid ,
      'message' : message

    })
    .success(function(data)
    {
        $scope.startChat(fksc_id);

    });
  }

After sending message through the following function i get the data: 

$scope.startChat = function(fksc_id=false)
 {

    if(fksc_id)
     {

      $http.get(url + 'c_chat/startChatJson/' + 
      fksc_id).success(function(data)
      {
        //console.log(data);
        $scope.chats = data;

      });
     }
 }

在我看来:

 <div ng-init="startChat()">
    <div  ng-repeat="chat in chats" > 

       <div class="col-md-6">

       <p >{{chat.sender_message}}</p> 
       </div>

       </div>

chat.sender_message是发件人和收件人的真实邮件。问题是只有在发送消息或刷新页面时才显示接收者消息。

我的数据库表就像

message_id     fksc_id      fkrc_id     sender_message

1 个答案:

答案 0 :(得分:0)

你可以每隔n秒使用角度超时刷新范围: -

 var timer = $timeout( function refresh(){
   //your code to refresh scope
    timer = $timeout(refresh, 100000);
}, 100000);

或者您可以使用套接字 Socket.io 来发出事件并刷新范围:

类似的东西:

socket.on('receive:message', function (message) {
   //your code to refresh scope
  });

我推荐 console logs