Websocket连接关闭,错误1006(Webdis)

时间:2014-03-25 20:42:10

标签: javascript websocket redis webdis

我在Debian 7 32上使用Redis + Webdis。

我的问题是在完成第一个命令后,所有websocket连接都以退出代码1006关闭(" SUBSCRIBE"一个除外)。例如,对于此testJSON()函数

function testJSON() {
  var jsonSocket = new WebSocket("ws://ip:7379/.json");
  jsonSocket.onopen = function() {
    console.log("JSON socket connected!");
    jsonSocket.send(JSON.stringify(["SET", "hello", "world"]));
    jsonSocket.send(JSON.stringify(["GET", "hello"]));
  };
  jsonSocket.onmessage = function(messageEvent) {
    console.log("JSON received:", messageEvent.data);
  };
  jsonSocket.onclose = function(messageEvent) {
    //some logging
  };
  jsonSocket.onerror = function(messageEvent) {
    //some logging
  };
}
testJSON();

我(在Firebug中)

JSON socket connected!
JSON received: {"SET":[true,"OK"]}
onClose: error.code 1006

onError事件正在工作,在{" SET":[true," OK"]}响应后,我的连接关闭。 GET命令也在工作。 Firefox和Chrome中的行为相同。我检查了标题,看起来它们是有效的。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

好的,它是一个功能,而不是bug。在代码(websocket.c)中:

if (cmd_is_subscribe(cmd)) {
    r->keep_alive = 1;
}

更改此代码解决了我的部分问题,但并非所有问题都解决了。