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

Socket.io.js не найден

По какой-то причине мой сервер node не может обслуживать маршрут /socket.io/socket.io.js, я всегда получаю ошибку 404.
Я пробовал компилировать разные версии node (текущий - 0,6.13, который также работает на сервере, где он действительно работает).
Из app.js я получаю info: socket.io started и никаких ошибок при попытке вызвать socket.io.js.

Я пробовал его с localhost и порта 8000, и я использую экспресс-фреймворк

Это код из app.js:

var express = require('express')
  , app = require('express').createServer()
  , io = require('socket.io').listen(app, { log: true });

app.listen(8000);

app.configure(function() {
    app.use(express.static(__dirname + '/public'));
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

io.sockets.on('connection', function (socket) {
   // all other stuff here
4b9b3361

Ответ 1

Пожалуйста, проверьте свою экспресс-версию. Express недавно обновлен до версии 3.0alpha, который был изменен API. Если 3.0 вы можете изменить свой код на что-то подобное:

var express = require('express')
  , http = require('http');

var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);

...

server.listen(8000);

Такая же проблема с подключением: https://github.com/senchalabs/connect/issues/500#issuecomment-4620773

Ответ 2

Использование с веб-картой Express 3: (из socket.io)

> Экспресс 3 требует, чтобы вы создавали экземпляр http.Server для подключения socket.io к первому:

Значение - (1) вы должны создать экземпляр сервера:

var app = express();
var http = require('http').createServer(app);

(2) свяжите его с socket.io:

var io = require('socket.io');
io.listen(http);

и ТОЛЬКО ТОГДА - (3) заставить сервер слушать:

http.listen(8080);

убедитесь, что вы сохранили этот порядок!

Ответ 3

После установки node 0.8.1 у меня была такая же проблема. Я просто удалил карту node_modules в моей папке проекта и переустановил express/socket.io. После этого он снова работал отлично с кодом в вашем вопросе.

Ответ 4

Возможно, это может вам помочь, на моем Ubuntu 11.10 я не правильно установил переменную NODE_PATH Если вы используете linux/mac, попробуйте добавить строку ниже в файл .bashrc/.zshrc.

export NODE_PATH=/usr/lib/node_modules:$NODE_PATH

Ответ 5

Установить Socket.io в свой репозиторий:

npm install socket.io --save 

После этого настройте сервер:

   var express = require('express')
   var app     = express();
   var server  = require('http').createServer(app);
   var io      = require('socket.io').listen(server);

   server.listen(app.get('80')); // not 'app.listen'

И внутри вашего архива HTML/EJS или другого вы хотите добавить:

<script src="/socket.io/socket.io.js"></script>

Проверьте, работает ли с Console (Chrome/Mozilla и т.д.).

В моем примере я использую Chrome (Ctrl + shift + I):

введите описание изображения здесь