node.js - Express/Socket.io : The right way for one socket per request

标签 node.js express socket.io

我正在尝试使用 Express、Socket.io 和 ntwitter 模块构建一个简单的 Node 应用程序,这样您只需搜索一个术语(即下面的 req.params.searchTerm),ntwitter 就会搜索它并输出通过 socket.io 进行流式传输。

但是,我在打开多个窗口或关闭一个窗口然后立即打开一个窗口时遇到了错误。有时搜索词不会更新,有时实际上会抛出某种 socket.io 错误。有人可以澄清执行此操作的正确方法或阐明我的错误吗?提前致谢。代码如下。

var server = http.createServer(app);

var io = require('socket.io').listen(server);

server.listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});

app.get('/:stream', function(req, res) {
 res.render('stream', { title: 'Search Twitter | ' + req.params.searchTerm });
    io.sockets.on('connection', function(socket) {

    var publishFlag = true;
    setInterval(function() {
        publishFlag = true;
    }, 1000);

    twit.stream('statuses/filter', { track: [req.params.searchTerm] },
        function(stream) {
            stream.on('data', function(tweet) {
                if(publishFlag) {
                    socket.emit('tweet', tweet);
                    publishFlag = false;
                }
            });
        }
    );
  });
});

最佳答案

我认为这就是您想要做的事情:

服务器端:

var server = http.createServer(app);

var io = require('socket.io').listen(server);

server.listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});

app.get('/:stream', function(req, res) {
 res.render('stream', { title: 'Search Twitter | ' + req.params.searchTerm });
});

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

    socket.on('stream', function(searchTerm){

        twit.stream('statuses/filter', { track: [searchTerm] },
            function(stream) {
                stream.on('data', function(tweet) {
                    socket.emit('tweet', tweet);
                });
            }
        );
    };
});

客户端(/:流)

var socket = io.connect('http://localhost');
socket.on('tweet', addTweetOnPage);
socket.emit('stream', searchTerm);

关于node.js - Express/Socket.io : The right way for one socket per request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12376928/

相关文章:

node.js - bcryptjs 中的加密和解密

javascript - 使用 postgres 作为 Db 执行 app.get 时 Node.js 出现 404 错误

c# - Socket.IOControl - 不明确的文档

node.js - 如何访问 WordPress 身份验证 token

javascript - Mocha 测试.Timeout 2000ms

node.js - Certbot 错误 : "Error getting validation data", Nginx Ubuntu Node 服务器

javascript - Node.JS:类方法作为回调

node.js - $http DELETE 变成 OPTIONS AngularJS

android - 在 Android 中通过套接字发送数据

node.js - openshift 与 socket.io,npm install 无法读取依赖项