【问题标题】:nodejs twitter how to end stream and start a new onenodejs twitter如何结束流并开始一个新的
【发布时间】:2020-12-19 01:31:56
【问题描述】:

我正在使用 nodejs 和 twit npm 包 (https://www.npmjs.com/package/twit) 构建一个简单的 twitter 流应用程序,这是我的后端代码:

       const twit = require('twit'); 
let tw = new twit({
    consumer_key: process.env.TWITTER_CONSUMER_KEY,
    consumer_secret: process.env.TWITTER_CONSUMER_SECRET,
    access_token: process.env.TWITTER_ACCESS_TOKEN,
    access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET,
    timeout_ms: 60 * 1000 // optional HTTP request timeout to apply to all requests.
});
       const geoStream = (geoLocation) => {
        let stream = tw.stream("statuses/filter", {
            locations: geoLocation
        });
       
        // ON STREAM EVENT
            stream.on("tweet", function(tweet) {
                
           // ─── SOCKET EMIT ─────
                socketIo.emit('tweet', tweet)
    
            });
        }
    }

我有一个更改位置的发布路线

// POST ROUTE
app.post('/', (req, res) => {
    // Set country and region from the form
    let country = req.body.country;
    let region = req.body.region;
    // Fetch Geo code coordinates and run new stream
    geoStream(geoLocation);
        //  REDIRECT
    res.render('index.ejs', {
        key: process.env.MAPQUEST_KEY
    });
});

twit 文档这么说

stream.stop() 在流上调用这个函数来停止流式传输 (关闭与 Twitter 的连接)。

我的问题是

stream.stop()

不停止流,流保持不变,那么,我如何停止/删除旧流并开始新流? 谢谢!

【问题讨论】:

    标签: node.js twitter stream


    【解决方案1】:

    使用“Twitter Lite”npm 包https://www.npmjs.com/package/twitter-lite 而不是“Twit”,可以像文档中指定的那样停止流式传输 我创建了一个简单的函数

    // ─── STOP STREAM ────────────────────────────────────────     
    const stopStream = () => {
            // To stop the stream:
            process.nextTick(() => stream.destroy()); // emits "end" and "error" events
        }
    

    然后是一个 Nodejs 路由,它启动函数 stopStream 并重定向到主页

    // GET STOP STREAM ROUTE
    app.get('/stopstream', (req, res) => {
            // Stop stream
            stopStream();
            // Redirect to home
            res.redirect('/');
        })
    

    现在您可以使用新坐标开始一个新的流。

    【讨论】:

      猜你喜欢
      • 2018-01-02
      • 1970-01-01
      • 1970-01-01
      • 2018-03-07
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      • 2018-01-13
      相关资源
      最近更新 更多