Node.js/socket.io/socket.io.js не найден
я продолжаю получать ошибку
/socket.io/socket.io.js 404 (не найдено)
Uncaught ReferenceError: io не определен
мой код
var express = require('express'), http = require('http');
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(3000);
и
<script src="/socket.io/socket.io.js"></script>
в чем проблема???
любая помощь приветствуется!
Ответы
Ответ 1
Копирование socket.io.js
в общую папку (что-то вроде resources/js/socket.io.js
) не является подходящим способом сделать это.
Если сервер Socket.io
правильно прослушивает ваш сервер HTTP
, он автоматически подаст файл клиента на http://localhost:<port>/socket.io/socket.io.js
, вам не нужно его искать или копировать в общедоступную папку как resources/js/socket.io.js
& подавать его вручную.
Пример кода
Express3.x -
Express 3 требует, чтобы вы создали экземпляр http.Server
, чтобы прикрепить socket.io
к первому
var express = require('express')
, http = require('http');
//make sure you keep this order
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);
//...
server.listen(8000);
Удачного кодирования :)
Ответ 2
Как найти socket.io.js для клиентской стороны
установить socket.io
npm install socket.io
найти файл socket.io
find ./ | grep client | grep socket.io.js
результат:
./node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js
скопируйте socket.io.js в свои ресурсы:
cp ./node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js /home/proyects/example/resources/js/
в вашем html:
<script type="text/javascript" src="resources/js/socket.io.js"></script>
Ответ 3
Кажется, что на этот вопрос, возможно, никогда не отвечали (хотя может быть слишком поздно для OP, я отвечу на него всем, кто встретит его в будущем и должен решить проблему).
Вместо npm install socket.io
вам нужно сделать npm install socket.io --save
, чтобы модуль socket.io был установлен в вашей папке веб-разработки (запустите эту команду в базовом расположении/где указан ваш index.html или index.php). Это устанавливает socket.io в область, в которой выполняется команда, а не глобально, и, кроме того, она автоматически исправляет/обновляет ваш файл package.json, поэтому node.js знает, что он есть.
Затем измените исходный путь от '/socket.io/socket.io.js'
до 'http://' + location.hostname + ':3000/socket.io/socket.io.js'
.
Ответ 4
... "Возможно, вам интересно, где находится файл /socket.io/socket.io.js
происходит, поскольку мы не добавляем его и не существуем в файловой системе. Это
часть волшебства, сделанная io.listen на сервере. Он создает обработчик на сервере
для обслуживания файла socket.io.js script.
из книги Socket.IO в режиме реального времени
Разработка приложений, стр. 56
Ответ 5
хотя это не имеет ничего общего с OP, если вы используете эту проблему при сохранении кода другого пользователя, вы можете обнаружить, что проблема вызвана установкой кодера io.set('resource', '/api/socket.io');
в приложении script, и в этом случае ваш код HTML будет <script>type="text/javascript" src="/api/socket.io/socket.io.js"></script>
.
Ответ 6
Вы должны просто следовать https://socket.io/get-started/chat/, и все будет работать.
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
http.listen(3000, function(){
console.log('listening on *:3000');
});