在server / app.js以外的路由中使用socket.io

时间:2017-03-14 04:15:28

标签: node.js express socket.io routes

您好我正在尝试在我的主 server.js 文件以外的文件中使用socket.io,我首先将其设置为:

const app = require('express')();
const http = require('http').createServer(app);
const mongoose = require('mongoose');
const io = require('socket.io')(http);

io.on('connection', (socket) => {
    console.log('a user connected');
    socket.on('disconnect', () => {
        console.log('user disconnected');
    });
});

由于我在server.js文件中进行设置,因此我必须侦听此文件中的事件,因此回调函数只能访问此文件的范围。但是我需要在我已经设置的路径中的另一个文件中使用它,例如:

app.use('/', home);

我已阅读thisthis,但没有人帮助过我。

感谢。

1 个答案:

答案 0 :(得分:1)

将套接字逻辑写入函数内的另一个文件中,并从server.js中调用它。

<强> socket.js

const io = require('socket.io');

module.exports = function(server) {
io(server).on('connection', (socket) => {
    console.log('a user connected');
    socket.on('disconnect', () => {
        console.log('user disconnected');
    });
});
}

并在 server.js

const app = require('express')();
const http = require('http').createServer(app);
const mongoose = require('mongoose');

require("./socket")(http)