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

标签 android ios iphone node.js socket.io

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

使用网络检查器,我无法在我的 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 模拟器。

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

最佳答案

原来是防火墙问题:|

台式电脑上了VPN,手机没有 这说明了这个问题

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

关于android - Socket.io 适用于桌面版 safari 和 chrome,但不适用于移动设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19887397/

相关文章:

iphone - 使用 Ruby on Rails 签署 iPhone 配置 XML 配置文件

android - 为 Flickr 身份验证创建签名(Android SDK)

android - fragment 中的 getMapAsync()

android - 如何在 linux 上为 android 构建 FFmpeg 2.0?

iOS 企业开发者帐户和公共(public)测试版?

ios - Opengles片段着色器实现效果

ios - 将我的应用程序提交到iTunes Connect时与BundleID和Prefix混淆

Android 6 Marshmallow 权限无法正常工作

ios - 只允许带有标签栏和 UInavigationcontroller 的方向肖像?

ios - 如何从 XMPP 库 ios 中获取所有注册用户?我试过这个但得到错误代码 404,找不到项目