gpt4 book ai didi

node.js - Socket.io 和现代浏览器不工作

转载 作者:搜寻专家 更新时间:2023-10-31 22:30:20 24 4
gpt4 key购买 nike

我在使用 socket.io 和现代浏览器时遇到了一些奇怪的问题。令人惊讶的是,IE9 工作正常,因为回退到 flashsocket 似乎工作得更好。

在我的服务器中(使用 express)

var io = socketio.listen(server.listen(8080));
io.configure('production', function(){
console.log("Server in production mode");
io.enable('browser client minification'); // send minified client
io.enable('browser client etag'); // apply etag caching logic based on version number
io.enable('browser client gzip'); // gzip the file
io.set('log level', 1); // reduce logging
io.set('transports', [ // enable all transports (optional if you want flashsocket)
'websocket'
, 'flashsocket'
, 'htmlfile'
, 'xhr-polling'
, 'jsonp-polling'
]);
});

在浏览器上,我可以在“网络”选项卡(在 Chrome 上)中看到一个 websocket 已建立并进入 101 Switching Protocols 待处理模式。之后出现xhr-polling和jsonp-polling(flashsocket怎么了?)

最糟糕的是信息不会来回传递。我有这个连接:

io.sockets.on('connection', function (socket) {
// If someone new comes, it will notified of the current status of the application
console.log('Someone connected');
app.sendCurrentStatus(socket.id);
io.sockets.emit('currentStatus', {'connected': true);
});

在客户端:

socket.on('currentStatus', function (data){ console.log(data) });

但是,我只有在关闭服务器时才能看到该日志,该服务器是通过以下方式启动的:

NODE_ENV=production node server.js

我做错了什么?

最佳答案

最后,在真的把我的头撞到墙上之后,我决定在几个环境中进行测试,看是否是防火墙问题,因为机器在几个环境之后。

事实证明,除了我没有人遇到问题,所以我检查了防病毒软件 (Trend Micro),禁用后,Chrome/Firefox 能够发挥它们的魔力。

故事的寓意

除了这里所说的 - Socket.IO and firewall software - 每当您遇到互联网上似乎没有人遇到的问题(即,未登录 github 或 socket.io 组)时,它可能是由您的防病毒软件引起的。他们是邪恶的。有时。

关于node.js - Socket.io 和现代浏览器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11650035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com