简体   繁体   English

Websocket无法在使用phonegap的Android应用程序中工作

[英]Websocket not working in android app using phonegap

I am trying to establish a websocket connection between my signalR server and an android app, built using the phonegap CLI. 我正在尝试在我的signalR服务器和使用phonegap CLI构建的android应用之间建立websocket连接。

The javascript code runs on browsers on my PC but when I package it for android it fails to connect and gives the following error: Error during negotiation request javascript代码在我的PC上的浏览器上运行,但是当我将其打包为android时,它将无法连接并给出以下错误:协商请求期间出错

Here is the javascript code - 这是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>

The asp.net code is hosted on azure. asp.net代码托管在azure上。 I also tried to connect without the generated proxy(commented code) which again worked on chrome but not on the android emulator(4.4). 我还尝试了在没有生成的代理(注释代码)的情况下进行连接,该代理再次适用于chrome,但不适用于android模拟器(4.4)。

Could someone tell me what I am doing wrong? 有人可以告诉我我在做什么错吗?

Thanks 谢谢

I am having the same problem as you. 我和你有同样的问题。 Websocket is a feature within html5 and is not supported by all browsers Chrome browser supports websockets but android 4.4 (jelly beans) In-browser doesn't. Websocket是html5中的一项功能,并非所有浏览器都支持Chrome浏览器支持websockets,但android 4.4(软糖)在浏览器中不支持。 This is why Android developed kitkat (which supports the websocket). 这就是Android开发kitkat(支持websocket)的原因。 If you want to use websocket within android 4.2,4.4 (jelly beans), you have to use websocket cordova plugin like the one here there are alot of others and I am just like you trying to find an answer 如果您想在android 4.2,4.4(果冻豆)中使用websocket,则必须使用websocket cordova插件,例如这里的插件还有很多其他插件,就像您在寻找答案一样

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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