我有一个带有 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