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
Ответы
Ответ 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):
![введите описание изображения здесь]()