1

浏览器找不到客户端的 socket.io.js:

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

在没有处理程序的情况下创建服务器时:

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

app.listen(80);

//without this part:
/*function handler (req, res) {
  fs.readFile(__dirname + '/index.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' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

我不需要也不想要处理函数,因为我在 PHP 中生成的所有内容。有时对 index.html/php 以外的其他文件使用客户端应用程序功能

那么如何让浏览器可以找到socket.io.js呢?

4

3 回答 3

1

将其包含在您的客户端!

<script type="text/javascript" src="/socket.io/socket.io.js"></script> 
var io = io.connect();
于 2014-07-01T09:07:55.117 回答
0

如果您不需要访问 http 模块功能,请使用以下方式:

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

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});
于 2012-08-27T17:33:54.850 回答
0

了一个演示应用程序,如果你不想花太多时间开始使用 socket.io 和 Express 3,你可以看看它。

要让 websockets 工作,您的客户端 js 需要从 web 服务器交付。这是众多浏览器限制之一。最简单的设置是拥有一个同时提供客户端 Js 和 WebSockets 的节点服务器。使用 Express 的 http 模块更简单(如果你想构建的不仅仅是一个测试应用程序,有点过分但超级实用)。

否则,您需要让客户端 js 指向正确的位置。例如,如果您运行端口 8080 的 socket.io 服务器,并在端口 8000 上提供静态客户端(python -m SimpleHTTPServer例如,使用常规 apache 或端口 80)。

<script src="http://localhost:8080/socket.io/socket.io.js"></script>
于 2012-08-27T18:02:28.353 回答