2012-09-12 84 views
1

我正在试验Web套接字。Websockets客户端不获取响应

我看http://www.websocket.org/echo.html网站... 他们对客户简单的echo演示[下创建自己的测试] 我复制代码...

<!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的服务器下吗?

回答

0

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

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

这里是一个工作example

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

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

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

0

即使包含OnMessage(),我也有类似的问题。我得到连接,发送,断开但没有响应。在其他答案中使用jsfiddle.net示例也发生过同样的情况。

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