#javascript #node.js #express #socket.io
Вопрос:
Вот мой код:
const consts = require('./public/script/consts.js'); const express = require('express'); const app = express(); const server = require('http').createServer(app); const { Server } = require('socket.io'); const io = new Server(server); function io_on_connection(socket) { console.log("a user connected"); // TODO: Emit user connected socket.on('sendmessage', (message) =gt; { io.emit("recievemessage", { username: "litte_coder", message: message }); }); } function app_get_root(req, res) { console.log("index"); res.sendFile(__dirname '/public/index.html'); } function server_listen() { console.log('Server is running...'); } /* Socket.io */ io.on('connection', io_on_connection); //app.use(express.static(__dirname '/public')); app.get('/', app_get_root); server.listen(consts.PORT, server_listen);
Когда я использую app.use(express.static...)
, app_get_root
обратный вызов не вызывает, но мой index.html отслужил. Моя структура каталогов выглядит следующим образом:
├── app.js ├── package.json ├── package-lock.json └── public ├── index.html ├── script │ ├── consts.js │ └── index.js └── style └── style.css
Но если мой обратный вызов app_get_root не работает, как он служит моему index.html досье?
Ответ №1:
Я запустил его, и если он работает для меня, даже добавив app.use(express.static(«общедоступный»));
Откуда вы знаете, что app_get_root не вызывается.
console.log(«индекс») печатается в консоли узла, а не в браузере.
Комментарии:
1. Да, код работает и для меня тоже.
2. На консоли вызывается io_on_connection. Я вижу «подключенный пользователь». Но когда я использую приложение.используйте…. он не пишет «индекс» на консоли. Так что это не называлось. Просто строка «пользователь подключен» из io_on_connection (извините за плохой английский)