AS3 Websocket握手

问题描述:

我想建立一个AS3套接字服务器,可以与html5 websockets握手。我基地我这个代码链接http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17AS3 Websocket握手

这就是我一直在使用相同的值作为链接的例子:

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 =”

我错过了什么?

它有一段时间我甚至看任何ActionScript,但你不应该取代

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

key = SHA1.hashToBase64(key); 

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

让我知道,如果这是任何帮助:

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