我有一个带有前端应用程序和一个后端应用程序的 Node.js 应用程序,后端将管理列表并将更新“推送”到前端应用程序,对前端应用程序的调用将触发列表更新,以便所有客户端都收到正确的列表数据。
问题出在后端,当我按下按钮时,我执行了一个 AJAX 调用,该 AJAX 调用将执行以下代码(删除了一些操作):
Lists.findOne({_id: active_settings.active_id}, function(error, lists_result) {
var song_list = new Array();
for (i=0; i < lists_result.songs.length; i++) {
song_list.push(lists_result.songs[i].ref);
}
Song.find({
'_id': {$in: song_list}
}, function(error, songs){
// DO STUFF WITH THE SONGS
// UPDATE SETTINGS (code trimmed)
active_settings.save(function(error, updated_settings) {
list = {
settings: updated_settings,
};
var io = require('socket.io-client');
var socket = io.connect(config.app_url);
socket.on('connect', function () {
socket.emit('update_list', {key: config.socket_key});
});
response.json({
status: true,
list: list
});
response.end();
}
});
});
然而 response.end 似乎从来没有工作,调用一直挂起,此外,列表并不总是被刷新,因此 socket.emit 代码存在问题。我假设套接字连接保持打开状态是因为响应没有结束?
我以前从未做过这个服务器端,所以任何帮助将不胜感激。(存在 active_settings 等)