Websockets客户端无法获得响应

时间:2012-09-12 08:42:59

标签: html5 websocket

我正在尝试使用网络套接字。

我查看http://www.websocket.org/echo.html网站... 他们为客户提供简单的回声演示[在创建自己的测试下] 我复制那段代码......

<!DOCTYPE html>  
<meta charset="utf-8" /> 
<title>WebSocket Test</title>  
<script language="javascript" type="text/javascript">  

 var wsUri = "ws://echo.websocket.org/";
 var output;

 function init() 
 { 
  output = document.getElementById("output"); 
  testWebSocket(); 
 }

 function testWebSocket() 
 { 
  websocket = new WebSocket(wsUri); 
  websocket.onopen = function(evt) { onOpen(evt) }; 
  websocket.onclose = function(evt) { onClose(evt) }; 
  websocket.onmessage = function(evt) { onMessage(evt) }; 
  websocket.onerror = function(evt) { onError(evt) }; 
 }

 function onOpen(evt) 
 { 
     writeToScreen("CONNECTED"); 
     doSend("WebSocket rocks"); 
}

function onClose(evt) 
{ 
   writeToScreen("DISCONNECTED"); 
}
function onError(evt) 
{ 
    writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data); 
 }

 function doSend(message) 
 { 
      writeToScreen("SENT: " + message); 
      websocket.send(message); 
}

function writeToScreen(message) 
{ 
    var pre = document.createElement("p"); 
    pre.style.wordWrap = "break-word"; 
    pre.innerHTML = message; 
    output.appendChild(pre); 
}

window.addEventListener("load", init, false);

</script>  <h2>WebSocket Test</h2>  
<div id="output"></div> 

 </html>

它连接但无法响应...

  

websocket的客户端是否应该在支持websocket的服务器下运行?

2 个答案:

答案 0 :(得分:0)

你缺少一个onMessage(evt)处理程序。

function onMessage(message){
   writeToScreen("GOT MESSAGE: " + message.data); 
}

这是一个有效的example

如果单击该按钮,它将打开一个连接发送消息并将其接收回来。

请注意,只有浏览器需要支持!

如果要在后端实现自己的基于Web套接字的服务。您需要一个支持cource的网络服务器..

答案 1 :(得分:0)

即使包含OnMessage(),我也遇到了类似的问题。我得到了连接,发送,断开但没有响应。在另一个答案中使用jsfiddle.net示例也是如此。

更改wsUri以使用TLS即:“wss://echo.websocket.org/”而不是“ws://echo.websocket.org/”修复了问题。 (也许这是由于浏览器中的一些安全设置。)