AS3 Websocket握手

时间:2012-03-14 14:18:11

标签: actionscript-3 websocket

我正在尝试构建一个可以与html5 websockets握手的AS3套接字服务器。我的代码基于此链接http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17

这就是我使用与链接中的示例相同的值:

 import com.dynamicflash.util.Base64;
 import com.adobe.crypto.SHA1;    

function getKey():void{
var key:String = "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
key = SHA1.hash(key);   
key = Base64.encode(key);
trace(key);
    //traces YjM3YTRmMmNjMDYyNGYxNjkwZjY0NjA2Y2YzODU5NDViMmJlYzRlYQ==  instead of s3pPLMBiTxaQ9kYGzzhZRbK+xOo="

}

现在该示例声明输出应为:

具体而言,如上例所示,| Sec-WebSocket-Key |标题字段具有值“dGhlIHNhbXBsZSBub25jZQ ==”,服务器将串联字符串“258EAFA5-E914-47DA-95CA-C5AB0DC85B11”以形成字符串“dGhlIHNhbXBsZSBub25jZQ == 258EAFA5-E914-47DA-95CA-C5AB0DC85B11”。然后服务器将获取此SHA-1哈希,给出值0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea。然后对该值进行base64编码(参见[RFC4648]的第4节),给出值“s3pPLMBiTxaQ9kYGzzhZRbK + xOo =”

我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

因为我甚至阅读过任何ActionScript但是你不应该替换

key = SHA1.hash(key);   
key = Base64.encode(key);

key = SHA1.hashToBase64(key);

?当前代码将sha1散列(字节数组)转换为字符串,但是它需要传递给base64编码器的原始字节数组。

答案 1 :(得分:0)

请告诉我这是否有任何帮助:

https://github.com/childoftv/as3-websocket-server