Android Stock Browser是否支持WebSocket?

时间:2013-12-04 15:33:36

标签: javascript android websocket

使用https://github.com/einaros/ws

服务器:

var WebSocketServer=require('ws').Server,wss=new WebSocketServer({port:8004});

wss.on('connection',function(s) {
    s.on('message',function(_){console.log('received: '+_);});
});

客户端:

var s=new WebSocket('ws://mysite.com:8004');
//android default browser dies here <---------------?       
s.onopen=function(){
    $('body').css({'background':'green'});
    s.send('hi');
    };

我不得不问为什么Android默认浏览器无法打开连接?

我在默认的Android浏览器上访问www.websocket.org/echo.html,它说此浏览器支持websocket。所以问题是什么?

这个简单的代码适用于iphone safari,windows chrome,android mobile chrome没问题。

在android默认浏览器上我也可以使用console.dir(window.WebSocket);它显示WebSocket对象与其他浏览器没有什么不同。

如果有人知道原因,请告诉。

由于


更新

if (!window.WebSocket && window.MozWebSocket) {
    window.WebSocket = window.MozWebSocket;
    alert('MozWebSocket');
}
else if (!window.WebSocket) {
    alert("WebSocket not supported by this browser");
}
else{
    alert('wtf!? '+window.WebSocket);
}

这给我一个控制台日志:

wtf!? function WebSocket(){[native code]}

1 个答案:

答案 0 :(得分:15)

Android股票浏览器实际上并不支持WebSocket。

显然已经完成了一些工作以准备添加支持,因此浏览器中的API就在那里,即您可以创建一个WebSocket对象。只是这实际上并没有在幕后做任何事情。

这导致一个简单的功能支持检查,它只是尝试创建套接字对象,显示WebSocket支持。检查readyState以获取已创建的WebSocket对象,您将看到它永远不会从“0”更改。

从Android 4.4开始,不再有股票浏览器了。 Web视图组件已切换到适用于Android的Chrome - 这确实支持WebSocket。