socket.io + експресна мрежова грешка: 404

Възможен дубликат:
socket.io: Неуспешно зареждане ресурс

Едно просто експресно приложение + socket.io hellow world изглежда не работи, продължавам да получавам

„Грешка в мрежата: 404 не е намерена – http:// localhost:3002/socket.io/socket.io.js“

Някой знае ли този проблем?

код:

app.js

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

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


app.configure(function () {
app.use(express.static(__dirname + '/public'));
});

app.listen(3002);


io.sockets.on('connection', function(socket) {
socket.emit('news', {hello: 'world'});
socket.on('my other event', function (data) {
    console.log(data);
});
});

index.html

<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my:'data' });
});


person nihulus    schedule 26.07.2012    source източник
comment
Да, но какво не е наред с кода, който причинява проблема?   -  person nihulus    schedule 26.07.2012


Отговори (1)


Вашият Socket.IO сървър слуша на порт 3002, но сте се свързали към:

var socket = io.connect('http://localhost');

който по подразбиране използва стандартен порт 80. Опитайте тази:

var socket = io.connect('http://localhost:3002');

Също така вероятно ще трябва да промените localhost на IP на вашата машина.

Странична бележка: Ако използвате Express Server и Socket.IO сървър на един и същ порт, тогава можете просто да направите:

var socket = io.connect();
person freakish    schedule 26.07.2012
comment
Благодаря за отговора сър! Не мисля, че има разлика между използването на localhost или моя IP? Освен това опитах вашата корекция, но все още получавам 404. - person nihulus; 26.07.2012
comment
Това е интересно. Може би това е така, защото сте задействали слушане на сървър след слушане на сокет? Поставете този ред: var io = require('socket.io').listen(server); след app.listen(3002);. Това е последната идея, която имам. :) - person freakish; 26.07.2012
comment
Уверете се, че не презареждате кеширана страница със стария безпортиран URL адрес. - person ebohlman; 26.07.2012