2014-04-08 33 views
0

我想在浏览器(Chrome)和Android手机之间建立连接。我有一个应该一直打开的网页,并且应该等待一个在Android上的某个事件开始的服务器。是否有可能在浏览器中使用websockets等待服务器?

我的代码:

<!DOCTYPE HTML> 
<html> 
<head> 
<script type="text/javascript"> 
function waitForSocketConnection(socket, callback){ 
    setTimeout(
     function() { 
      if (socket.readyState === 1) { 
       console.log("Connection is made") 
       if(callback != null){ 
        callback(); 
       } 
       return; 

      } else { 
       console.log("wait for connection...") 
       waitForSocketConnection(socket); 
      } 

     }, 5); // wait 5 milisecond for the connection... 
} 
function WebSocketTest() 
{ 
    if ("WebSocket" in window) 
    { 
    alert("WebSocket is supported by your Browser!"); 
    // Let us open a web socket 
    var ws = new WebSocket("ws://192.168.0.15:8887"); 
    waitForSocketConnection(ws, function() {alert('callback')}) 
    ws.onopen = function() 
    { 
     // Web Socket is connected, send data using send() 
     ws.send("Message to send"); 
     alert("Message is sent..."); 
    }; 
    ws.onmessage = function (evt) 
    { 
     var received_msg = evt.data; 
     alert("Message is received..."); 
    }; 
    ws.onclose = function() 
    { 
     // websocket is closed. 
     alert("Connection is closed..."); 
    }; 

    } 
    else 
    { 
    // The browser doesn't support WebSocket 
    alert("WebSocket NOT supported by your Browser!"); 
    } 
} 
</script> 
</head> 
<body> 
<div id="sse"> 
    <a href="javascript:WebSocketTest()">Run WebSocket</a> 
</div> 
</body> 
</html> 

如果我点击运行的WebSocket当服务器没有运行然后我得到警报“连接已关闭”,即使我启动服务器我不明白“连接时”在控制台上。它只在服务器运行之前运行,然后单击运行WebSocket。如何使它工作?

+0

这个问题是不是属于机器人?你在哪里得到这个错误连接已关闭“?? –

+0

它只是浏览器(html5)websockets。我在浏览器中得到这个消息。只有服务器在Android上运行。 – latata

+0

你有没有从android端发生任何错误 –

回答

0

找你缺少WebSocketTest我认为有些事情......

  • ws.onclose你应该再打电话ws = new WebSocket..重新连接上的错误/断开...

normaly等待服务器成为可用就像这样

var ws = new WebSocket(host); 
// if no connection is available or error occurred 
ws.onclose = function() { 
    // wait a bit and retry, don't flood the network ;) 
    setTimeout(function(){ ws = new WebSocket(host); }, 100); 
} 

也与此你不必显式chec k为准备状态 - 只要把你的代码ws.onopen


编辑:

ARR ..棘手形容..阅读评论请注意的例子;)

+0

也许这将对你有用.. http://stackoverflow.com/a/23248679/626731 – DerDu

相关问题