如何从routes / index访问io.emit()? 在快递4.15上

这个问题在这里已经有了答案:

  • express.js 4和带有快速路由器2的套接字应答

  • 我想你已经使用生成app.js和bin / www文件的express生成器生成应用程序,在路径内部使用io对象时存在循环依赖关系问题。 以下是你可以做的事情,

    在app.js中

    app.io = require('socket.io')(); // initialize io, attach server in www
    // use socket events here
    app.io.on('connection', function(socket){
       // do whatever you want
    })
    
    // you can pass app.io inside the router and emit messages inside route.
    const userRoute = require('./routes/user')(app.io);
    app.use('/users', userRoute);
    

    在bin / www中

    var io = app.io;  
    var server = http.createServer(app);  
    io.attach(server);  
    

    下面是路由器的样子,user.js

    module.exports = function(io){
        router.get('/', function(req, res, next){
            io.emit("message", "your message");
            res.send();
        })
        // edited
        return router;
    }
    

    注意:我还没有尝试过。

    但是你可以尝试这种模式吗?

    在www.js

     module.exports = function(io) {
    
      io.on('connection', function(client) {
        console.log('Client connected...');
        client.on('join', function(data) {
            console.log(data);
        });
      });
    }
    

    在index.js中

    var server = http.createServer(app);
    io = require('socket.io')(server);
    
    require('./wwww.js)(io);
    
    链接地址: http://www.djcxy.com/p/33037.html

    上一篇: How to access io.emit() from routes/index? on express 4.15

    下一篇: I'm trying to connect to oracledb from node facing the below error