WebSocket
λ±μ₯ λ°°κ²½
HTTP νλ‘ν μ½μ μ΄μ©ν ν΅μ μ κΈ°λ³Έμ μΌλ‘ λ¨λ°©ν₯μ΄λ€. Clientλ‘λΆν° μμ±λ Request Packetμ΄ μλ²μκ² μ λ¬λλ©΄, μλ²λ μ΄μ λν Reseponse Packetμ μ 곡νλ λ°©μμΌλ‘ ν΅μ μ΄ μ΄λ£¨μ΄μ§λ€.
μ΄λ¬ν λ¨λ°©ν₯ ν΅μ μ λ¨μ μ μλ²μ λ³νκ° μλλΌλ, λ°λμ ν΄λΌμ΄μΈνΈκ° μμ²μ ν΄μΌ ν΄λΉ λ³νλ₯Ό νμΈν μ μλ€λ κ²μ΄λ€. μΉμμΌμ μλ²κ° μμ² μμ΄λ ν΄λΌμ΄μΈνΈμκ² λ°μ΄ν°λ₯Ό μ μ‘ν μ μλλ‘ μλ°©ν₯ ν΅μ νκ²½μ μ 곡ν¨μΌλ‘μ¨ μ΄λ¬ν λ¨μ μ ν΄κ²°νλ€.
WebSocket (μΉμμΌ)
μ μ
μλ²μ ν΄λΌμ΄μΈνΈ κ° μλ°©ν₯ ν΅μ μ μν νλ‘ν μ½
ws://λ‘ μμνλ©°, TCP/IP κΈ°λ°μΌλ‘ λμνλ€.
λμ μ리
ν΄λΌμ΄μΈνΈκ° μλ²μκ² νΈλμμ΄νΉ(websocket μ°κ²°μ μν νμ)μ ν΄λΉνλ HTTP μμ² μ μ‘
GET /chat HTTP/1.1 Host: example.com:8000 Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Version: 13HTTP 1.1μ΄μμ λ²μ μ μ¬μ©ν΄μΌ ν¨HTTP λ©μλλ λ°λμ
GETUpgrade: websocketν€λλ₯Ό ν¬ν¨Connection: Upgradeν€λλ₯Ό ν¬ν¨ν΄λΌμ΄μΈνΈ/μλ² κ° μΈμ¦μ μν
Sec-WebSocket-Keyν€λλ₯Ό ν¬ν¨μλ²κ° μΉμμΌ λ²μ μ μΈμν μ μλ κ²½μ° λ²μ λͺ μλ₯Ό μν΄
Sec-WebSocket-Versionν€λλ₯Ό ν¬ν¨
μλ²λ 1λ² μμ²μ λν μλ΅μ μ μ‘
// Success HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=μ΄μ λΆν° μΉμμΌ νλ‘ν μ½μ μ¬μ©ν κ²μ΄λΌλ μν μ½λ
101μ μ¬μ©λ§μ°¬κ°μ§λ‘
Upgrade,Connectionν€λλ₯Ό ν¬ν¨ν΄λΌμ΄μΈνΈμ
Sec-WebSocket-Keyκ°μ λ§€μ§ μ€νΈλ§κ³Ό μ΄μ΄ λΆμ΄κ³ SHA-1 ν΄μ μκ³ λ¦¬μ¦μΌλ‘ μνΈννκ³ base64λ‘ μΈμ½λ©ν κ°μ λ΄μSec-WebSocket-Acceptν€λλ₯Ό ν¬ν¨
// Fail HTTP/1.1 400 Bad Requestλ§μ½ μ°κ²°μ μ€ν¨νλ€λ©΄ μλ²λ μ¦μ
400μ λ°ννκ³ μ¦μ μμΌμ μ’ λ£ν΄μΌ ν¨
μ±κ³΅μ μΌλ‘ νλ‘ν μ½μ΄ μΉμμΌ(ws)μΌλ‘ λ³κ²½λ κ²½μ°, μ΄μ μλ²μ ν΄λΌμ΄μΈνΈλ μΈμ λ λ©μμ§λ₯Ό μ μ‘ν μ μλ€. (μ¦, μλ°©ν₯ ν΅μ μ ν μ μλ€.)
Last updated