iOS 5 的 Websocket 连接立即关闭,我正在尝试连接到 node.js 服务器和 phonegap 应用程序

Posted

技术标签:

【中文标题】iOS 5 的 Websocket 连接立即关闭,我正在尝试连接到 node.js 服务器和 phonegap 应用程序【英文标题】:Websocket connection is closing immediately for iOS 5 , I am trying to connect to node.js server and phonegap application 【发布时间】:2013-08-22 06:44:26 【问题描述】:

我正在尝试使用 websocket 连接到 node.js 服务器。我正在开发一个 Phonegap 应用程序。当我尝试使用 ios 6.x 模拟器连接时,它完美地通过 websocket 连接到服务器。但是使用 iOS 5.x 模拟器它没有连接。我看到当我运行代码时,它立即使用 ios 5.x 模拟器调用 onclose 方法。我正在使用 node.js 版本 0.10.17,也尝试使用 0.10.7。

我为 node.js 安装了 websocket 模块,这是我的客户端连接代码

function openConnection()

    // if user is running mozilla then use it's built-in WebSocket
    window.WebSocket = window.WebSocket || window.MozWebSocket;

    // if browser doesn't support WebSocket, just show some notification and exit
    if (!window.WebSocket)
    
        alert("Sorry your browser does not support websockets");
        return;
    
    // new socket

    connection = new WebSocket('ws://127.0.0.1:1337'); //change the ip address for online


    // push a message after the connection is established.

    connection.onopen = function()
       
        connection.send(sender_id); //change this iuserID in real case.
        //connection.send('Sample1');

        var message ="receive_offline_messages";    
        var message_to_be_sent = JSON.stringify(recevieruserid:sender_id,message:message);
        connection.send(message_to_be_sent);

        //Is the receiver online / offline
        var message ="get_delivery_report"; 
        var message_to_be_sent = JSON.stringify(message_sender_id:sender_id,message:message);
        connection.send(message_to_be_sent);

        connected_to_the_server=1;

        get_unsent_message();
        change_unsent_message_status();


    ;


.....

【问题讨论】:

【参考方案1】:

iOS 5 实现了早期的draft version of the WebSocket spec。

当前大多数基于服务器的 websocket 服务器仅支持最终确定的 WebSocket 规范 (RFC-6455)

在 HTTP 升级请求握手中被视为以下标头 ...

Sec-WebSocket-Version: 13

此外,此站点跟踪许多浏览器的 websocket 支持级别。

http://caniuse.com/websockets

【讨论】:

您好 Joakim,感谢您的回复。我是这个领域的新手,但我从您的回复中了解到 iOS 5 实现了早期版本的 websocket。但是是否有任何解决方法或 phonegap 插件可以使用 iOS 5.x 的 websocket。特别是如果一个代码适用于 iOS 5.x 及更高版本,那就太好了。

以上是关于iOS 5 的 Websocket 连接立即关闭,我正在尝试连接到 node.js 服务器和 phonegap 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Websocket 连接立即打开和关闭

Firefox 在连接错误时不会立即关闭 WebSocket?

Websocket 握手仅在 IE 10 中立即关闭

Websocket 连接尝试失败,返回“连接:升级,关闭”。

Websocket 连接不会在 FireFox 中关闭

WebSocket 连接到“wss://argus.chi.shopify.io”失败:WebSocket 在连接建立之前关闭