socket.io:加载资源失败

新手上路,请多包涵

我正在尝试开始使用 socket.io 和 node.js。

在 socket.io 网站上的第一个示例之后,我在浏览器的控制台中收到以下错误:

 Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:3001/socket.io/socket.io.js
Uncaught ReferenceError: io is not defined

这是我的 server.js

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

app.listen(3001);

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

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

这是我的 index.html

 <!DOCTYPE html>
<html>
  <head>
    <title></title>
    <meta charset="UTF-8" />
  </head>
  <body>
    <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' });
  });
</script>
  </body>
</html>

我已经安装了socket.io ..

原文由 gaggina 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 482
1 个回答

问题

  • 首先,您需要在客户端查看服务器绑定的服务器端口( app.listen(3001); ),以便完全到达服务器。

  • 至于 socket.io,在链接标签的其余源代码之前添加 http://localhost:3001 解决了这个问题。这显然是由于网络将端口绑定到本地主机的方式,但是我将尝试找到更多有关原因的信息;

改变什么:


服务器的端口绑定:

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

应该改成

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



使 socket.io 行为:

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

应该改成

<script src="http://localhost:3001/socket.io/socket.io.js"></script>


原文由 Michael Zaporozhets 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题