УЗЕЛ: пытаясь остановить поток - PullRequest
0 голосов
/ 13 октября 2018

Итак, у меня есть простая форма с вводимым текстом, пользователь может искать запрос, нажимать кнопку «Пуск», поток Twitter начинается ... когда пользователь нажимает кнопку «Стоп», поток останавливается.

проблема : Я добавил событие emit, однако, когда нажата кнопка остановки, она не работает!то есть остановка потока

     // Destroy on stopBtn is clicked
      socket.on('myapp:search', function(term) {
        console.log('received a new search:', term);
    _stream.destroy();
      });

index.pug

 form#search-form(action='javascript:sendForm()', method='POST')
    input(type="text" name="searchTerm" placeholder="#hastag" required)
    button(type="submit"  name="startBtn" id="startBtn") Search
    button(type="submit" id="stopBtn" name="stopBtn") Stop

script.js

function sendForm() {
   $("#startBtn").on('click', function() {
    console.log("stared");
    let form = $('#search-form');
    let query = form.serialize();
    $.post('/', query, async function (data) {
        const results = await data;
    });

   }); 
   $("#stopBtn").on('click', function() {
        console.log("stop btn");
        socket.emit("myapp:search", function(data) {
            alert("stopped stream");
        }); 
    });
}

index.js

io.on('connection', function(socket) {

  // Socket Stream Button 
  const _stream = {};

  /* GET home page. */
  router.get('/', function(req, res, next) {
    res.render('index', { title: 'Express' });
  });


    router.post('/', async (req, res) => {
        twitterStream(socket, _stream, req.body.searchTerm, function(_stream) {
          _stream.on('data', function(tweet) {
            console.log(tweet.text + "Streaming");
            // socket.emit('tweet', tweet.text);
          });

          _stream.on('error', function(error) {
            console.log("erorr:: " + error);
            throw error;
          });

         // Destroy on stopBtn is clicked
          socket.on('myapp:search', function(term) {
            console.log('received a new search:', term);
           _stream.destroy();
          });
        });

        res.send("true");
    });
});
function twitterStream(socket, _stream, term, callback) {
    // return new Promise((resolve, reject) => {

      console.log("TERM _" +term);
      client.stream('statuses/filter', { track: term }, function(stream) {
        _stream = stream;

        callback(_stream);
      });

    // });
  }
...