2014-01-04 8 views
0

Я экспериментировал этот вопрос на game.htmlNode.js Socket.io неправильный путь

GET http://localhost/socket.io/socket.io.js 404 (Not Found) game.html:1 
Uncaught ReferenceError: io is not defined game.html:3 

Мой файл game.html

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

И мои server.js

var app = require('http').createServer(handler) 
    , io = require('socket.io').listen(app) 
    , fs = require('fs') 

app.listen(5667); 

function handler (req, res) { 
    fs.readFile(__dirname + '/game.html', 
    function (err, data) { 
    if (err) { 
     res.writeHead(500); 
     return res.end('Error loading index.html'); 
    } 

    res.writeHead(200); 
    res.end(data); 
    }); 
} 

io.sockets.on('connection', function (socket) { 
    socket.emit('news', { hello: 'world' }); 
}); 

Он отлично работал, когда я использовал index.html вместо game.html

ответ

1

Похоже, вы не получение game.html из приложения узла, так как файл socket.io.js кажется, извлекается из HTTP-порта, работающего на порту 80, тогда как приложение Node работает на порту 5667.

Кроме того, ваш клиент- сторона строка подключения неверна:

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

это также пытается связаться с сервером по порту 80 (и я не знаю, что game.html делает там).

Так попробуйте это:

  • изменить строку подключения на стороне клиента для var socket = io.connect();
  • запустить приложение Node
  • открыт http://localhost:5667/ в вашем браузере

И посмотрите, что работает лучше ,