Sec-Websocket-key trong websocket
Mình đang tìm hiểu về websocket, có một thắc mắc về Sec-Websocket-key như này. Đọc tài liệu về websocket của IETF thì nó nói link tài liệu):
To prove that the handshake was received, the server has to take two pieces of information and combine them to form a response. The first piece of information comes from the |Sec-WebSocket-Key| header field in the client handshake:
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
For this header field, the server has to take the value (as present in the header field, e.g. the base64-encoded [RFC4648] version minus any leading and trailing whitespace), and concatenate this with the Globally Unique Identifier (GUID, [RFC4122]) “258EAFA5-E914-47DA-95CA-C5AB0DC85B11” in string form, which is unlikely to be used by network endpoints that do not understand the WebSocket protocol. A SHA-1 hash (160 bits), base64-encoded (see Section 4 of [RFC4648]), of this concatenation is then returned in the server’s handshake [FIPS.180-2.2002].
Để mở một kết nối tới server websocket, thì client sẽ gửi một header chứa trường Sec-Websocket-key là một chuỗi ngẫu nhiên, độ dài 16 byte.
Xong server sẽ nối key này với chuỗi cố định “258EAFA5-E914-47DA-95CA-C5AB0DC85B11”
xong sau đó chuỗi sau khi nối này được mã hóa bằng sha1, rồi lại mã hóa bằng base64.
Sau đó server trả về chuỗi mã hóa base64 này cho client, ghi vào trường Sec-Websocket-Accept trong response.
Mình không thể hiểu làm cái này để làm gì
Nếu cái server websocket nó chỉ làm cái mã hóa chuỗi như vậy, thì bây giờ mình dùng 1 server khác (ko phải websocket) thực hiện mã hóa cái chuỗi Sec-websocket-key cũng được vậy. Vậy cái này nó mục đích là gì thế.
Với lại, nếu server muốn xác nhận là nhận được handshake từ client, thì trả về HTTP code 101 là được rùi, cần thêm cái này làm gì zậy ta. Ai có thể giải thích cho mình với
Writing WebSocket servers
A WebSocket server is a TCP application listening on any port of a server that follows a specific protocol, simple as that. The task of creating a custom server tends to scare people; however, it can be easy to implement a simple WebSocket server on...
nó làm trò như vậy để chứng tỏ server nó có hỗ trợ WebSocket. Nếu chỉ trả về 101 bình thường thì làm sao biết server có hỗ trợ websocket hay ko?