Наверное, это очевидно, но я уже больше 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: если я удалю часть сокета, экспресс-функции будут работать правильно.
Итак, похоже, вы создаете свой собственный 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.
Вау, это было быстро! Спасибо за ответ, теперь работает! Я запутался с именами переменных.