使用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]}
答案 0 :(得分:15)
Android股票浏览器实际上并不支持WebSocket。
显然已经完成了一些工作以准备添加支持,因此浏览器中的API就在那里,即您可以创建一个WebSocket对象。只是这实际上并没有在幕后做任何事情。
这导致一个简单的功能支持检查,它只是尝试创建套接字对象,显示WebSocket支持。检查readyState以获取已创建的WebSocket对象,您将看到它永远不会从“0”更改。
从Android 4.4开始,不再有股票浏览器了。 Web视图组件已切换到适用于Android的Chrome - 这确实支持WebSocket。