Angularjs 停止套接字IO事件触发与调用次数相同的事件
我有一个Ionic/AngularJS应用程序,它向我的节点服务器发送函数中的事件,如下所示:Angularjs 停止套接字IO事件触发与调用次数相同的事件,angularjs,node.js,socket.io,Angularjs,Node.js,Socket.io,我有一个Ionic/AngularJS应用程序,它向我的节点服务器发送函数中的事件,如下所示: $scope.doKeywordSearch = function (keyword, details) { var lat = details.geometry.location.lat(); var lng = details.geometry.location.lng(); socket.emit('keywordSearch', {lat: lat, lng: ln
$scope.doKeywordSearch = function (keyword, details) {
var lat = details.geometry.location.lat();
var lng = details.geometry.location.lng();
socket.emit('keywordSearch', {lat: lat, lng: lng, keyword: keyword});
socket.on('searchResults', function (results) {
console.log(results);
});
}
在服务器上,事件的处理方式如下:
io.sockets.on('connection', function(socket) {
socket.on('keywordSearch', function(searchData) {
var searchResults = [];
function(){
//do loads of search stuff here
}
setTimeout(function(){
socket.emit('searchResults', {results: searchResults});
},2000)
})
});
socket.on('searchResults', function (results) {
console.log(results);
});
客户端上的searchResults事件的处理方式如下:
io.sockets.on('connection', function(socket) {
socket.on('keywordSearch', function(searchData) {
var searchResults = [];
function(){
//do loads of search stuff here
}
setTimeout(function(){
socket.emit('searchResults', {results: searchResults});
},2000)
})
});
socket.on('searchResults', function (results) {
console.log(results);
});
每次调用该函数时,返回的结果与我之前在节点应用程序运行时调用该函数的次数相同,+1。所以它每次都递增
如何阻止这种情况发生,并使它在每次调用函数时返回一次?
我构造Socket.io事件的方式是否有错误?每次调用doKeywordSearch时,您都会通过调用添加另一个侦听器
socket.on('searchResults', function (results) {
console.log(results);
});
确保只调用套接字。在“searchResults”上。。。在你的应用程序加载后