Разъем.io не может найти localhost

#node.js #socket.io #localhost #http-status-code-404

Вопрос:

Я следовал этому базовому учебнику, когда быстро узнал об этом сокете.ио, похоже, не обнаруживает моего index.html и localhost выдает сообщение об ошибке 404. Так что, возможно, я что-то перепутал, поэтому скопировал файлы из учебника, но та же проблема сохраняется. Что я упускаю?

Комментарии:

1. К вашему сведению, этот учебник не дает возможности фактически загрузить index.html , так как простой сервер в этом примере-это всего лишь сокет. сервер ввода-вывода и нет обычного http-сервера, который мог бы обслуживать index.html. Итак, как вы загружаетесь index.html?

2. Я так и думал. io загрузил бы его аналогично express.

3. Нет, розетка. ввод-вывод отвечает ТОЛЬКО на сокет. запросы ввода-вывода, а не обычные запросы веб-страниц. Подойди к розетке. веб-сайт ввода-вывода для примеров использования сокета. ио С экспрессом, как здесь .

4. Я понимаю, спасибо. Странно, как в учебнике этого не хватает…

Ответ №1:

Разъем.ввод-вывод сам по себе реагирует ТОЛЬКО на сокет.запросы ввода-вывода, а не обычные запросы веб-страниц. Итак, если вы хотите, чтобы ваш сервер работал как с сокетом, так и с ним.io и быть обычным веб-сервером для обслуживания веб-страниц, тогда вам нужно будет интегрировать обычный веб-сервер вместе с вашим сокетом.код ввода-вывода.

Розетка.на веб-сайте io приведен пример использования сокета.ио С экспрессом, как здесь. Основная концепция (из сокета.io doc) это:

 const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const { Server } = require("socket.io");
const io = new Server(server);

app.get('/', (req, res) => {
  res.sendFile(__dirname   '/index.html');
});

io.on('connection', (socket) => {
  console.log('a user connected');
});

server.listen(3000, () => {
  console.log('listening on *:3000');
});