Подтвердить что ты не робот

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>

в чем проблема???

любая помощь приветствуется!

4b9b3361

Ответ 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');
});