socket.io 发出的新数据不会被 AngularJS 获取



我有一个带有 socket.io 的 NodeJs 服务器,我的应用程序是一个聊天 我正在使用 AngularJS 作为客户端,我的问题是当我向我的数据库发送新数据时正确保存,但是当我到达我的客户端时,数据本身没有刷新,

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

我有这个

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 是不要刷新它,有些人可以帮助我提前感谢。

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

我很确定,这是因为原始框架的功能需要与适合您的风格(提供者,工厂或服务(进行转换才能进入摘要循环。

看看打字稿版本的教程(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

最新更新