我正在尝试开始使用 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 许可协议
问题
首先,您需要在客户端查看服务器绑定的服务器端口(
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>