Как переместить код Socket.io io.on ('connection') в другой файл js? - PullRequest
0 голосов
/ 04 марта 2020

СИТУАЦИЯ (ОСНОВНОЙ НАЧАЛО ОСНОВНОГО ВОПРОСА находится под)

В последнее время я практикую Node.js веб-хостинг.

Я создаю папку с express -генератором, например под.

$ express --view=pug # default jade, change pug
$ npm install

$ ls
app.js bin node_modules package.json public routes views

Для создания новой страницы с именем chat. js, в приложении. js

var chatRouter = require('./routes/chat');

...

app.use('/chat', chatRouter);

и создания /views/chat.pug, /routes/chat.js просто.


Сейчас. Я хочу использовать socket.io.

Некоторые примеры кодов приводят меня как под.

1. изменить приложение. js

var app = express(); # express generate this line
app.io = require('socket.io')();

...

app.io.on('connection', function(socket) {
  console.log('app.js connection');
});

2. изменить ./bin/www*1030*

var server = http.createServer(app); # express generate this line
app.io.attach(server);

3. изменить /views/chat.pug

    <script src="/socket.io/socket.io.js"></script>
    <script>
        $(function() {
            var io = socket();
        });
    </script>

Когда я запускаю сервер с sudo node ./bin/www и подключаю страницу http://www.sample.com/chat, выходит журнал app.js connection. Отлично.

ОСНОВНОЙ ВОПРОС НАЧИНАЕТСЯ

Но я хочу разделиться под кодами НЕ app.js, например, /routes/chat.js или где-нибудь для коротких app.js

app.io.on('connection', function(socket) {
  console.log('app.js connection');
});

Я пытаюсь, как под, но это не работает, как я ожидал. В /routes/chat.js

var io = require('socket.io')(server);
io.on('connection', function(socket) {
  console.log('chat.js connection'); # NOT COMES HERE
});

Пожалуйста, помогите мне избежать увеличения app.js.

1 Ответ

1 голос
/ 04 марта 2020

В корзине импортируйте другой модуль и передайте в него приложение

// app.js
var app = express(); # express generate this line

app.io = require('socket.io')();
require('../new-file')(app)

// new-file.js
module.exports = (app) => {
   app.io.on('connection', function(socket) {
      console.log('app.js connection');
   });  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...