1

フロントエンド アプリとバックエンド アプリを備えた 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 などは存在します)

4

1 に答える 1