使用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对象与其他浏览器没有什么不同.
如果有人知道原因,请告诉我.
谢谢
UPDATE
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]}
gzost.. 15
事实上,Android股票浏览器并不支持WebSocket.
显然已经完成了一些工作以准备添加支持,因此浏览器中的API就在那里,即您可以创建WebSocket对象.只是这实际上并没有在幕后做任何事情.
这导致一个简单的功能支持检查,它只是尝试创建套接字对象,显示WebSocket支持.检查readyState以获取已创建的WebSocket对象,您将看到它永远不会从"0"更改.
从Android 4.4开始,不再有股票浏览器了.Web视图组件已切换到Android版Chrome - 这确实支持WebSocket.
事实上,Android股票浏览器并不支持WebSocket.
显然已经完成了一些工作以准备添加支持,因此浏览器中的API就在那里,即您可以创建WebSocket对象.只是这实际上并没有在幕后做任何事情.
这导致一个简单的功能支持检查,它只是尝试创建套接字对象,显示WebSocket支持.检查readyState以获取已创建的WebSocket对象,您将看到它永远不会从"0"更改.
从Android 4.4开始,不再有股票浏览器了.Web视图组件已切换到Android版Chrome - 这确实支持WebSocket.