как я могу отделить socket.io от файла socket.js и использовать его в router.js - PullRequest
1 голос
/ 18 октября 2019

У меня есть приложение express / node.js, и я хотел бы отделить логику socket.io от app.js до его собственного файла, а затем использовать в rout.js.

этопуть, по которому я хочу идти:

app.js

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

sockets.js

function updatePageRoute(routerLocationParam) {
    console.log('in socket');
    //console.log(io);
    io.on('connection', function (socket) {
        io.emit('routerLocation', 'someone visited {' + routerLocationParam + '} page');
    })
}

module.exports = {updatePageRoute: updatePageRoute};

и rout.js

router.get('/a', function (req, res) {
    console.log('in a');
    const a = 'a';
    socketFun.updatePageRoute(a);
    res.send({name: 'a'});
});

Я пробовал разные способы сделать эту работу, но я просто не могу найти решение, я не могу правильно экспортировать io из app.js в socket.js

1 Ответ

1 голос
/ 18 октября 2019

В вашем app.js просто сделайте io global:

global.io = require('socket.io')(http);

И тогда вы можете использовать io в socket.js:

router.get('/a', function (req, res) {
   console.log('in a');
   const a = 'a';
   io.updatePageRoute(a);
   res.send({name: 'a'});
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...