简体   繁体   中英

Web Sockets doesn't work on Chrome and Safari in iOS 6.1

I wrote a very basic web program that connects to a Node JS web server which print text on to a console thats from the browser.

All good on the computer but when I try to connect to the web socket server from my iPhone, it doesn't connect to it (It connects to the http server but not to the ws)

SERVER (Node JS)

app.get ('/', function(req, res){ 
    fs.readFile('ws.html', 'utf8', function(err, text){
            res.send(text);
    });
});
server.listen(1337, function (){
    console.log((new Date()) + " Server is listening on port 1337... ");
});

//creating the websocket server

websock = new WebSocketServer({
    httpServer: server
});

//WebSocket Server
websock.on('request', function(request) {
     console.log((new Date()) + ' Connection from origin ' + request.origin + '.');

     var connection = request.accept(null, request.origin);
     var index = clients.push(connection) - 1;
     console.log((new Date()) + ' Connection accepted.');

    //Incoming message handling
    connection.on('message', function(message) {
            console.log('Client Says: ' +  message.utf8Data);
    });

    connection.on('close', function (connection){
            //close connection
    });
});

Client Script $(function () {

var content = $('#content');
var input = $('#input');
var status = $('#status');

window.WebSocket = window.WebSocket || window.MozWebSocket;

 if (!window.WebSocket) {
    content.html($('<p>', { text: 'Browser doesn\'t '
                                    + 'support   WebSockets.'} ));
    input.hide();
    $('span').hide();
    return;
}

var connection = new WebSocket('ws://127.0.0.1:1337');

connection.onopen = function () {
    input.removeAttr('disabled');
    status.text('Send a Message:');
};

connection.onerror = function (error) {
     content.html($('<p>', { text: 'Connection Error' } ));
};

connection.onmessage = function (message) {
    // try to decode json 
    try {
        var json = JSON.parse(message.data);
    } catch (e) {
        console.log('Invalid Message Text: ', message.data);
        return;
    }
    // handle incoming message
    connection.send($('#input').val());
};

 input.keydown(function(e) {
    if (e.keyCode === 13) {
        var msg = $(this).val();
        if (!msg) {
            return;
        }
        connection.send(msg);
        $(this).val('');

        if (myName === false) {
            myName = msg;
        }
    }
  });
});

I know those 2 browsers are supporting web sockets, cannot see what I'm doing wrong. Can anyone see what wrong with it.

您正在使用回送地址127.0.0.1而不是服务器地址在客户端上打开套接字。

var connection = new WebSocket('ws://127.0.0.1:1337');

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM