WebSocket服务器数据框架(RFC6455)

时间:2012-01-03 17:39:05

标签: perl websocket

我有问题。当我想要实现WebSocket服务器时,服务器无法向客户端发送数据(在Chrome 16中)。例如,发送文本“Hello”,服务器将数据帧“0x81 0x05 0x48 0x65 0x6c 0x6c 0x6f”发送到客户端,但浏览器无法接收数据。这段代码错了吗?

sub getSendDataNoMask{
    my $dataStr="Hello";
    my @ret;

    push(@ret,pack("H*","81"));
    push(@ret,pack("H*","05"));
    push(@ret,$dataStr);

    return join("",@ret);
}

1 个答案:

答案 0 :(得分:0)

您从Chrome Javascript控制台获得了什么错误?

您也没有发布握手代码(更有可能出现问题)。你确定握手成功完成了吗?换句话说,你是否在浏览器中获得了一个onopen事件?

var ws = WebSocket("ws://myhost:6080/websocket");
ws.onopen = function (e) {
    console.log("connection opened");
};
ws.onmessage
    console.log("Got data: " + e.data);
};

如果你没有得到opopen事件,那么握手永远不会成功完成。如果您正在进行onopen事件,那么我会尝试向相反方向发送数据,并确保在尝试发送之前可以从perl服务器接收和解码帧。