首页 > 解决方案 > AngularJS 不接收 socket.io 发出的新数据

问题描述

我有一个带有socket.io的NodeJs服务器,我的应用程序是一个聊天我使用AngularJS作为客户端,我的问题是当我将新数据发送到我的数据库时被正确保存,但是当我到达我的客户端时数据不是' t刷新了自己,

在我的客户端聊天控制器上

我有这个

 socket.on(CHAT.GET_CHATS, instance.onChatsReceived);

我正在调用这个函数

从带有所有数据的套接字服务器接收发出的对象

    function onChatsReceived(chatsArr) {
        console.log(chatsArr);
        // decode messages for history array
        chatsArr.forEach(function (oneChat) {
            var parsed = JSON.parse(oneChat.members);
            var parsedSent = JSON.parse(oneChat.sentby);
            // console.log(parsedSent)
            var nick = parsedSent[0].lastseen;
            // console.log(nick);
            oneChat.isOnline = $scope.isOnline(parsedSent[0].lastseen);
            var decoded = htmlDecode(oneChat.message);
            oneChat.message = decoded;
            oneChat.members = parsed;
        });

        $scope.messagesCounted = true;

        $scope.$applyAsync(function () {
            $scope.chats = chatsArr;
            if ($scope.chats.length < 100 ) {
                $scope.loadMoreContacts = false;
            }
        });

    }

但是如果我不刷新浏览器,我的对象数组不会改变

在我插入数据后,我的数组来自我的套接字

(18) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]

在我插入数据并刷新我的浏览器之后

(19) [{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{… }、{…}、{…}、{…}、{…}、{…}、{…}]

就像 socket.io 发出数据但 AngularJS 不刷新它有些可以帮助我提前感谢。

标签: sqlangularjsnode.jssocket.io

解决方案


你能提供你正在运行的 Angular 的版本吗?

我很确定,这来自于原始框架的功能需要转换为适合您(提供者、工厂或服务)的风格才能进入摘要循环的必要性。

查看 Typescript 版本(Angular2+)的教程

https://tutorialedge.net/typescript/angular/angular-socket-io-tutorial/

或者 AngularJS (1<) 的那个:

https://code.tutsplus.com/tutorials/more-responsive-single-page-applications-with-angularjs-socketio-creating-the-library--cms-21738


推荐阅读