Use socket.io inside a express routes file

后端 未结 6 1081
刺人心
刺人心 2020-11-28 05:05

I\'m trying to use Socket.io with Node.js and emit to a socket within the logic of a route.

I have a fairly standard Express 3 setup with a server.js file that sits

6条回答
  •  半阙折子戏
    2020-11-28 05:42

    There is a better way to do this now with Express 4.0.

    You can use app.set() to store a reference to the io object.

    Base configuration:

    var app = require('express')();
    var server = app.listen(process.env.PORT || 3000);
    var io = require('socket.io')(server);
    // next line is the money
    app.set('socketio', io);
    

    Inside route or middleware:

    exports.foo = function(req,res){
        // now use socket.io in your routes file
        var io = req.app.get('socketio');
        io.emit('hi!');
    }
    

    Information about app.set() and app.get() is below:

    app.set(name, value)

    Assigns setting name to value. You may store any value that you want, but certain names can be used to configure the behavior of the server. These special names are listed in the app settings table.

    Calling app.set('foo', true) for a Boolean property is the same as calling app.enable('foo'). Similarly, calling app.set('foo', false) for a Boolean property is the same as calling app.disable('foo').

    Retrieve the value of a setting with app.get().

    Source: https://expressjs.com/en/api.html#app.set

提交回复
热议问题