簡體   English   中英

Websocket無法在使用phonegap的Android應用程序中工作

[英]Websocket not working in android app using phonegap

我正在嘗試在我的signalR服務器和使用phonegap CLI構建的android應用之間建立websocket連接。

javascript代碼在我的PC上的瀏覽器上運行,但是當我將其打包為android時,它將無法連接並給出以下錯誤:協商請求期間出錯

這是JavaScript代碼-

<!DOCTYPE html>
<html>
<head>
    <title>My New Application</title>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no;" />

    <script type="text/javascript" src="js/jquery-1.7.1.js" ></script>
    <script type="text/javascript" src="js/jquery.mobile-1.0.1.js"></script>
    <script type="text/javascript" src="js/jquery.signalR-2.0.3.js"></script>  
    <script type="text/javascript" src="phonegap.js"></script>

    <script type="text/javascript" src=http://WEB_ADDRESS.net/signalrPush/signalr/hubs"></script>

    <script type="text/javascript"> 
        $(function() {

            alert('Phonegap device ready event...');

            /*
            var connection = $.hubConnection("http://WEB_ADDRESS.net/signalrPush/signalr", { useDefaultPath: false });
            connection.error(function (error){
                alert("SignalR error: " + error);
                });
            var pushhubProxy = connection.createHubProxy('pushhub');
            pushhubProxy.on('sendmsg',function(message){ $('#ulServerMessages').append('<li>' + message + '</li>'); alert(message);});
            connection.start({ transport: ['webSockets', 'longPolling'] }).done(function(){ alert('Now connected, connection ID=' + connection.id);})
                            .fail(function(){ alert('Could not connect'); });

            */

            $.connection.hub.url = "http://WEB_ADDRESS.net/signalrPush/signalr";
            var mypushHub = $.connection.pushhub;
            if(typeof(mypushHub)=="object")
            {
                alert(typeof(mypushHub));   
                mypushHub.client.sendmsg = function (message) {
                    $('#ulServerMessages').append('<li>' + message + '</li>');
                    alert(message); 
                }
                $.connection.hub.start({jsonp: true}).done(function () {
                    mypushHub.server.broadcastmsg();
                }).fail(function (error) { alert(error); });
            }
            else
            {
                alert(typeof(mypushHub));
                alert("Connection Prob");
            }
        });
    </script>
</head>
<body>
    <div data-role="header">
        <h1>Get Server Data</h1>
    </div>
    <div id="pusheddata" style="width:300px; height:400px; overflow: auto;">
       <ul id="ulServerMessages"></ul>
    </div>
</body>
</html>

asp.net代碼托管在azure上。 我還嘗試了在沒有生成的代理(注釋代碼)的情況下進行連接,該代理再次適用於chrome,但不適用於android模擬器(4.4)。

有人可以告訴我我在做什么錯嗎?

謝謝

我和你有同樣的問題。 Websocket是html5中的一項功能,並非所有瀏覽器都支持Chrome瀏覽器支持websockets,但android 4.4(軟糖)在瀏覽器中不支持。 這就是Android開發kitkat(支持websocket)的原因。 如果您想在android 4.2,4.4(果凍豆)中使用websocket,則必須使用websocket cordova插件,例如這里的插件還有很多其他插件,就像您在尋找答案一樣

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM