ws-frame = frame-fin ; 1 bit in length frame-rsv1 ; 1 bit in length frame-rsv2 ; 1 bit in length frame-rsv3 ; 1 bit in length frame-opcode ; 4 bits in length frame-masked ; 1 bit in length frame-payload-length ; either 7, 7+16, ; or 7+64 bits in ; length [ frame-masking-key ] ; 32 bits in length frame-payload-data ; n*8 bits in ; length, where ; n >= 0
frame-fin = %x0 ; more frames of this message follow / %x1 ; final frame of this message ; 1 bit in length
frame-rsv1 = %x0 / %x1 ; 1 bit in length, MUST be 0 unless ; negotiated otherwise
frame-rsv2 = %x0 / %x1 ; 1 bit in length, MUST be 0 unless ; negotiated otherwise
frame-rsv3 = %x0 / %x1 ; 1 bit in length, MUST be 0 unless ; negotiated otherwise
frame-opcode-non-control= %x1 ; text frame / %x2 ; binary frame / %x3-7 ; 4 bits in length, ; reserved for further non-control frames
frame-opcode-control = %x8 ; connection close / %x9 ; ping / %xA ; pong / %xB-F ; reserved for further control ; frames ; 4 bits in length frame-masked = %x0 ; frame is not masked, no frame-masking-key / %x1 ; frame is masked, frame-masking-key present ; 1 bit in length
frame-payload-length-16 = %x0000-FFFF ; 16 bits in length
frame-payload-length-63 = %x0000000000000000-7FFFFFFFFFFFFFFF ; 64 bits in length
frame-masking-key = 4( %x00-FF ) ; present only if frame-masked is 1 ; 32 bits in length
frame-payload-data = (frame-masked-extension-data frame-masked-application-data) ; when frame-masked is 1 / (frame-unmasked-extension-data frame-unmasked-application-data) ; when frame-masked is 0
frame-masked-extension-data = *( %x00-FF ) ; reserved forfuture extensibility ; n*8 bits in length, where n >= 0
frame-masked-application-data = *( %x00-FF ) ; n*8 bits in length, where n >= 0
frame-unmasked-extension-data = *( %x00-FF ) ; reserved forfuture extensibility ; n*8 bits in length, where n >= 0
frame-unmasked-application-data = *( %x00-FF ) ; n*8 bits in length, where n >= 0
Octet i of the transformed data("transformed-octet-i") is the XOR of octet i of the original data("original-octet-i") with octet at index i modulo 4 of the masking key("masking-key-octet-j"):
j = i MOD 4 transformed-octet-i = original-octet-i XOR masking-key-octet-j original-octet-i:为原始数据的第 i 字节。 transformed-octet-i:为转换后的数据的第 i 字节。 j:为i mod 4的结果。 masking-key-octet-j:为 mask key 第 j 字节。