Warum funktioniert meine node.js / socket.io-App unter iOS6 nicht?

Ich dachte, der springende Punkt von socket.io war, sich nicht um moderne Browser kümmern zu müssen? lol

Wie auch immer, ich bin neu in der Socket-Programmierung. Ich habe eine kleine App, die einfach Mausbewegungen nachahmt.

Sie öffnen mehrere Browser und wenn Sie die Maus bewegen, werden Ihre Aktionen in den anderen Browsern aufgezeichnet. Es bewegt sich ein kleines Quadrat. Irgendwie cool. Wenn ich es jedoch auf meinem iPad (iOS6) öffne, nichts! Steckdosen verbinden sich nicht. Ich habe sogar eine Warnmeldung in dieconnect Ereignis und nichts.

Funktioniert in IE, FF und Chrome ganz gut auf meinem Laptop. Der einzige Unterschied ist, dass meine Dev-Maschine verwendetlocalhost während das iPad die IP meines Rechners verwendet. Wenn ich jedoch auf meinem Laptop eine Verbindung zu meiner lokalen IP-Adresse herstelle, funktioniert dies immer noch. Nur nicht in Safari / iPad.

Hier ist mein Server.

    var app = require('http').createServer(handler),
        io = require('socket.io').listen(app),
        fs = require('fs');


    app.listen(80);

    function handler(req, res) {
        var file = __dirname + '/public/index.html';
        fs.readFile(file, 
            function(err, data) {
                if(err) {
                    res.writeHead(500);
                    return res.end('Error loading index.html');
                }

                res.writeHead(200);
                res.end(data);
            }
        );
    }


    var rooms = ['abc', 'test1'];

    var sockets = [];
    io.sockets.on('connection', function(socket) {
        sockets.push(socket);

        socket.on('m', function(data) {
            socket.broadcast.to(socket.room).emit('relay', {msg: 'MouseX: ' + data.x + ' MouseY: ' + data.y, x: data.x, y: data.y});
        });

        socket.on('join', function(room) {
            socket.join(room);
            socket.emit('updateStatus', {msg: 'Joined room ' + room});
            console.log('Joined room ' + room);
        });

    });

Hier ist mein Kunde:

<!doctype html>
<html>
    <head>
        <style>
            body {
                padding: 40px;
            }
            #cursor {
                background:white;
                border:1px solid black;
                color: white;
                display: block;
                height:24px;
                padding:6px;
                position:absolute;
                width:24px;
                z-index:20;
            }
        </style>
    </head>
    <body>

        <input id='msg' type='text' size='100' /><br />
        <input id='box' type='text' size='100' />
        <div id='cursor'></div>

        <script src='/socket.io/lib/socket.io.js'></script>
        <script>
            var socket = io.connect('http://localhost');
            var b = document.getElementById('box');
            var m = document.getElementById('msg');
            var c = document.getElementById('cursor');

            // join custom room
            socket.on('connect', function() {
                socket.emit('join', 'abc');
            });

            // update status messages from server
            socket.on('updateStatus', function(data) {
                m.setAttribute('value', data.msg);
            });

            socket.on('relay', function(data) {
                b.setAttribute('value', data.msg);
                c.style.left = parseInt(data.x) + 'px';
                c.style.top = parseInt(data.y) + 'px';
            });

            document.onmousemove = function(event) {
                event = event || window.event;
                socket.emit('m', {x: event.clientX, y: event.clientY});
            }


        </script>

    </body>
</html>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage