WebSockets只接收“断开连接”

时间:2011-09-26 22:02:53

标签: websocket

我正在Google Chrome上尝试这个简单的websocket示例:

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) 
 }; 

 ..............
 ..............

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

 function onClose(evt) {
    writeToScreen("DISCONNECTED"); 
 }  

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

但我总是只收到DISCONNECT!

有什么问题?

我是否必须在本地Apache中启用WebSockets协议?如果是的话怎么样?

2 个答案:

答案 0 :(得分:2)

此服务器不可靠。对于Chrome 14,它甚至失败了on their own demo page

Chrome 14的WebSockets请求的响应是这个,这显然是不正确的:

HTTP/1.1 200 OK
Server: Kaazing Gateway
Date: Tue, 27 Sep 2011 14:07:53 GMT
Content-Length: 0

请注意,Chrome刚刚切换到WebSockets协议的新草稿,这是一次彻底的改革。这意味着服务器必须返回不同的握手响应,并且还必须解码发送的消息,这与之前的草案不同。可能只是他们还没有升级他们的服务器。

您可能想要的是设置自己的服务器,该服务器符合新草案并在该服务器上进行测试。

WebSockets服务器上有很多库随处可见;您可以查看here并选择您选择的服务器语言。

答案 1 :(得分:1)

您需要指定websocket是一个变量。改变这一行:

websocket = new WebSocket(wsUri); 

到此:

var websocket = new WebSocket(wsUri);

希望它有所帮助。这解决了我的一些问题。