Configuring Express 4.0 routes with socket.io

前端 未结 3 642
渐次进展
渐次进展 2021-01-31 22:33

I have created a new Express application. It generated app.js for me and I have then created the following index.js bringing in socket.io:

var app = require(\'./         


        
3条回答
  •  粉色の甜心
    2021-01-31 23:00

    SocketIO does not work with routes it works with sockets.

    That said you might want to use express-io instead as this specially made for this or if you are building a realtime web app then try using sailsjs which already has socketIO integrated to it.

    Do this to your main app.js

    app = require('express.io')()
    app.http().io()
    
    app.listen(7076)
    

    Then on your routes do something like:

    app.get('/', function(req, res) {
        // Do normal req and res here
        // Forward to realtime route
        req.io.route('hello')
    })
    
    // This realtime route will handle the realtime request
    app.io.route('hello', function(req) {
        req.io.broadcast('hello visitor');
    })
    

    See the express-io documentation here.

    Or you can do this if you really want to stick with express + socketio

    On your app.js

    server = http.createServer(app)
    io = require('socket.io').listen(server)
    require('.sockets')(io);
    

    Then create a file sockets.js

    module.exports = function(io) {
    
        io.sockets.on('connection', function (socket) {
            socket.on('captain', function(data) {
                console.log(data);
                socket.emit('Hello');
            });
        });
    };
    

    You can then call that to your routes/controllers.

提交回复
热议问题