2015-11-26 7 views
2

начал проект с НПМ, который создал определенную структуру файла:Node.js: требуют() и передачи переменных

< WWW - требуют() вызывает app.js; сервер экземпляров

app.js < - экземпляр var app = express(); и имеет module.exports = приложение;

Теперь, я бы хотел использовать socket.io. В моем файле «WWW», вот фрагмент кода:

var app = require('../app'); ... var server = http.createServer(app);

И я хотел бы поставить все мои на стороне сервера слушателей патрубков app.js, но следующий код:

var io = require('socket.io').listen(server);

Требуется сервер в качестве входа. Как создать сервер, который я создал в 'www', доступный в 'app.js'?

+0

Что точка входа вашего приложения? Кажется, это 'www', так почему бы не поместить ваш' var io' в этот файл? – Shanoor

ответ

1

Кажется немного странным. Но если вы настаиваете на такой структуре, вы можете экспортировать объект из www, который будет иметь app как свое свойство и метод, который связывает сокет-слушатели, принимает app объект в качестве параметра.

module.exports = { 
    app: app, 
    bindSocketListeners: function(server, io) { 
     io.listen(server); 
     return io; 
    } 
}; 

И называют это:

var appObj = require('../app'); 
var io = require('socket.io'); 
var app = appObj.app; 
var server = http.createServer(app); 
io = appObj.bindSocketListeners(server, io) 
+0

Спасибо, полезно. Почему ты сказал, что это странно? Если я не хочу, чтобы миллион слушателей для всего моего приложения в моем www-файле, было бы разумнее иметь только прослушиватели сокетов для каждой обслуживаемой страницы на этих соответствующих страницах, после чего я должен передать ту же самую переменную io, которая имеет для привязки к одному и тому же серверу. Что будет обычной практикой? – glog

+0

Возможно, я ошибаюсь, но для меня больше логики иметь общий файл для обработки приложений и создания сервера, а другой - для настройки приложения (для установки middlewares, маршрутов, сокетов и т. Д.). Тем не менее, вы босс вашего приложения, и вы решаете! :) Приветствия! –

Смежные вопросы