Node.js Socket.io路径错误

时间:2014-01-04 20:26:00

标签: node.js socket.io

我正在game.html上试验这个问题

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 个答案:

答案 0 :(得分:1)

看起来您没有从Node应用程序中检索game.html,因为socket.io.js文件似乎是从端口80上运行的HTTP端口检索的,而您的Node应用程序正在端口5667上运行

此外,您的客户端连接字符串不正确:

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

那也试图联系端口80上的服务器(我不知道game.html在那里做了什么)。

所以试试这个:

  • 将客户端连接字符串更改为var socket = io.connect();
  • 启动您的节点应用
  • 在浏览器中打开http://localhost:5667/

看看它是否更好。