我有问题。当我想要实现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);
}
答案 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服务器接收和解码帧。