【问题标题】:Using socket.io in routes other than server/app.js在 server/app.js 以外的路由中使用 socket.io
【发布时间】:2017-03-14 04:15:27
【问题描述】:

您好,我正在尝试在我的主 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 都没有帮助我。

谢谢。

【问题讨论】:

    标签: node.js express socket.io routes


    【解决方案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)
    

    【讨论】:

    • 从来没有想过这么简单的方法。谢谢。
    猜你喜欢
    • 2016-10-18
    • 2015-12-10
    • 1970-01-01
    • 2013-09-22
    • 2018-06-17
    • 1970-01-01
    • 2017-12-21
    • 2018-10-06
    • 2019-10-17
    相关资源
    最近更新 更多