我正在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协议?如果是的话怎么样?
答案 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);
希望它有所帮助。这解决了我的一些问题。