我正在尝试使用网络套接字。
我查看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的服务器下运行?
答案 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/”修复了问题。 (也许这是由于浏览器中的一些安全设置。)