Я создал экспресс-приложение в NodeJS, используя express --view=pug expressapp
. Он создал файл app.js
app.js
var createError = require('http-errors');
...
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
//socket setup
var socket = require('socket.io');
var io = socket(app);
io.on('connection', function(socket) {
console.log('made socket connection')
})
module.exports = app;
в конце я пытаюсь привязать socket.io
к приложению, но оно ожидает привязки к серверу, вот так
var server = app.listen(3000, function() {
});
//socket setup
var socket = require('socket.io');
var io = socket(server);
Я также использую nodemon
, поэтому я запускаю приложение, используя nodemon expressapp
, и оно запускается на порту 3000. Однако я не могу найти, где автоматически сгенерированные экспресс-файлы настроили сервер. Потому что если я попробую вот так
//socket setup
var socket = require('socket.io');
var server = app.listen(3000, function() {
});
var io = socket(server);
Я получаю сообщение об ошибке, что порт 3000 уже используется (сам по себе), я изменил его на 4000
, и он работает.
Не идеально, если вы знаете, как подключиться к порту 3000
, оценят помощь.