Файлы Socket.io отсутствуют?

Наверное, это очевидно, но я уже больше 3 часов занимаюсь этим, но не могу понять проблему. Я просто хочу создать простую веб-страницу, которая может взаимодействовать с кодом на стороне сервера. У меня последняя версия всех библиотек.

Мой серверный код:

//import libaries
global.express = require('express');
global.http = require('http');
global.socketio = require('socket.io');

global.app = express();
global.server = http.createServer(app);
global.io = socketio(server);

//serve files
app.use(express.static('public'));

//start listening
app.listen(80, () => {
    console.info('listening...');
});

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

И мой клиентский код выглядит так:

<script src = "/socket.io/socket.io.js"></script>
<script>
    let socket = io();
</script>
<script src = "sketch.js"></script>

Это должно работать, но я получаю эту ошибку каждый раз (в боковой консоли клиента):

GET http://localhost/socket.io/socket.io.js net::ERR_ABORTED 404 (Not Found)

Я знаю, что таких вопросов много, но они обычно устарели.

PS: если я удалю часть сокета, экспресс-функции будут работать правильно.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Итак, похоже, вы создаете свой собственный http-сервер, а затем подключаете к нему socket.io. Но тогда вместо того, чтобы слушать указанный сервер, вы слушаете Express. Либо сделать

server.listen(80, () => {
    console.info('listening...');
});

или просто используйте сервер Express

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

Кроме того, если вы создаете простой веб-сайт, вам может вообще не понадобиться socket.io.

Вау, это было быстро! Спасибо за ответ, теперь работает! Я запутался с именами переменных.

Samu Nemeth 22.12.2020 16:23

Другие вопросы по теме