Socket.io 适用于桌面 safari 和 chrome,但不适用于移动设备

Posted

技术标签:

【中文标题】Socket.io 适用于桌面 safari 和 chrome,但不适用于移动设备【英文标题】:Socket.io working on desktop safari & chrome, but not mobile 【发布时间】:2013-11-22 03:15:33 【问题描述】:

我正在使用 socket.io 在服务器和 html5 客户端之间建立通信,并且在桌面和 iPhone 模拟器上的 safari 上一切正常。当我尝试从任何 ios 甚至 android 设备运行客户端时,客户端无法建立连接。

使用 web 检查器,我无法在我的 ios7 设备上输出控制台错误,但设法获取资源列表,其中包含 XHR 下的项目,尝试连接到服务器 IP 地址并在大约 2 到 3 分钟后失败(转红色)

我的 iOS 设备是 iOS 7.03 (iPhone 4),我使用的是 node v0.10.21 和 socket.io v0.9.16 我也在使用 ip 地址进行连接,所以我不确定是否有相同的域限制适用

以下是来自客户端的相关部分:

<script src="http://xx.xx.xx.xx:port/socket.io/socket.io.js"></script>
var socket =  io.connect("http://xx.xx.xx.xx:port");

socket.on('connect', function() 
    console.log("connected");


socket.on('disconnect', function() 
    console.log("disconencted");


socket.on('message', function(data) 
    console.log("rcved:"+ data*emphasized text*);

服务器

var io = require('socket.io').listen(12321).set('log level', 0);
var ConnectionHandler = require('./handler.js');


io.sockets.on('connection', function (socket) 
new ConnectionHandler(socket);
);

我还需要指出,当我在服务器端启用完整日志记录时,不会尝试从移动设备建立连接,而只是桌面设备和 iOS 模拟器。

感谢任何有关修复或如何寻求解决此问题的建议

【问题讨论】:

【参考方案1】:

原来是防火墙问题:|

台式电脑在 *** 上,手机没有 这解释了这个问题

我觉得很愚蠢,但我会把它留在这里,以防它帮助某人检查同样的问题

【讨论】:

你做了什么?为您的手机设置 ***? 如果这解决了您的问题,您可以将您的回答标记为正确的,这样对于寻找此问题的人来说问题似乎已解决。

以上是关于Socket.io 适用于桌面 safari 和 chrome,但不适用于移动设备的主要内容,如果未能解决你的问题,请参考以下文章

Socket.io 适用于 localhost 但不适用于 Heroku 服务器

Java socket.io 客户端

node ios socket.io SSL 适用于 xcode 调试,但不适用于 ipa install

为啥地理定位在 Safari 桌面中失败?

Websockets 在 iOS 和 Safari 上不起作用 - OSStatus 错误 9837

移动 Safari 推送通知