【发布时间】:2018-02-19 17:37:16
【问题描述】:
我有一个来自 socket.io 官方网站的基本节点 express/socket 示例应用程序(链接粘贴在下面),我注意到当用户连接时,“连接”甚至只是一遍又一遍地触发。
所以我发现一个帖子 (Socket IO chat repeating user connected) 说 socket.io 2.xx 中存在一个错误,当我恢复到 socket.io 1.3.7 时,这个问题确实停止了,这是一个已确认的错误,我们应该回滚到 1.xx 版本吗?还是有没有反映在当前文档中的使用 socket.io 的新方法?
我的服务器代码:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
console.log('a user connected');
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
我的客户端代码:
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
</script>
我的服务器终端输出(永远重复):
a user connected
a user connected
a user connected
...
Socket.io 官方示例: https://socket.io/get-started/chat/
【问题讨论】:
-
可能是
<script src="/socket.io/socket.io.js"></script>的问题,因为我刚刚在我的PC 中使用Socket IO v2.0.4 运行了这个示例,而user connected没有重复 -
永远重复连接一般是由于socket.io的客户端和服务器版本不匹配造成的。我想知道您是否会遇到旧版本的
/socket.io/socket.io.js浏览器缓存问题? -
@jfriend00 是的,我相信就是这样。客户端与服务器版本控制不匹配。我不知道为什么路径在下面的答案中很重要,但如果你想提交答案,我会给它加星标。