【发布时间】:2019-01-14 23:45:52
【问题描述】:
我是 Angular 和 Node.js 的新手。 我的代码对服务器端函数执行 socket.emit 并在 socket.on 事件('listartists')中接收响应。 不幸的是,他在这个事件中进入了两次,我不明白为什么。 在服务器端(app.js)我放置了日志并且该函数被正确调用了一次,但随后它通过了 socket.on 两次('listartists')。
谢谢大家
var appAng = angular.module('appAng', []).controller('myCtrl', function($scope) {
socket.on('listartists', function(msg) {
// !!! enter twice this part of the code
var ClientMessage = JSON.parse(msg);
if (ClientMessage.ClientID == GetClientUniqueId()) {
var artistslist = JSON.parse(ClientMessage.Message);
$scope.$apply(function() {
var artistslist=JSON.parse(ClientMessage.Message);
$scope.artists = artistslist;
});
}
});
});
【问题讨论】:
-
“两次进入”是什么意思?由于某种原因,您还解析了两次
ClientMessage.Message。你能显示你的后端代码吗?假设 socket.io 有不同的methods for broadcasting。 -
您好,感谢重播!事件 socket.on() 中的代码并不重要。实际上,问题在于它在事件中进入了两次。如果我从 Angular 模块中写入 socket.on 事件,那么它只会执行一次,但我无法在外部使用范围