2012-09-12 88 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/」修復了問題。 (也許這是由於瀏覽器中的一些安全設置。)