socket.io连接但不在ios10上触发事件

时间:2016-09-22 15:48:04

标签: jquery node.js websocket socket.io ios10

我使用的是jquery / socket.io / nodejs。直到iOS 10(iPad - 未在iPhone上测试),这曾经工作并获得与服务器的良好连接。这是从较大的项目中抽象出来的,以复制问题。 nodejs服务器在此示例中获取连接,如其日志文件中所示。

我没有连接到浏览器控制台,因为它是iPad。使用Safari,虽然Chrome也不起作用。我尝试了一个" try / catch"围绕这个(这里没有显示)和"赶上"永远不会开火。

Socket.io使用的是不兼容IPv6的websockets,因此Apple可能会遇到问题,但我没有找到任何引用它的明确答案。

已经阅读过某些地方Apple可能会削弱使用" eval"的javascript,但再次找不到更明确的内容。

<html>
<head>
    <title>iOS10 Socket.io Test</title>
    <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
    <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: ws://dev.website.com:3002 http://dev.website.com ; style-src 'self' 'unsafe-inline' ; media-src * ;script-src 'self' 'unsafe-inline' ;connect-src 'self' *" />

    <script src="lib/jquery-1.10.2.min.js" type="text/javascript"></script>
    <script src="lib/socket.io-1.4.5.js" type="text/javascript"></script>
</head>
<body style="margin:0;padding:0;">
    <div id='debug' style="margin:12px;border:1px solid red;"></div>

    <script>
        $(document).ready(function() {
            var tt = this;
            tt.debugPrint = function(s) {
                console.log(s);
                $("#debug").append(s + "<br>\n");
            }
            tt.io = io; // grab global "io"
            var href = 'http://dev.website.com:3002';
            tt.socket = tt.io.connect(href);

            if (tt.socket) 
                tt.debugPrint("socket created");

            tt.socket.on('connected', function(data) {
                tt.debugPrint("connected");
            });

            tt.socket.on('disconnect', function(data) {
                tt.debugPrint("disconnected");
            });

            tt.socket.on('reconnecting', function(data) {
                tt.debugPrint("reconnecting");
                console.error(data);
            });

            tt.socket.on('reconnect', function(data) {
                tt.debugPrint("reconnect");
                console.error(data);
            });
        });
    </script>
</body>
</html>

0 个答案:

没有答案