2024. 6. 25. 22:31ใTIL
๐กWebSocket์ด๋?
์น์์ผ
- ์น์์ผ(WebSocket)์ ์๋ฒ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฐ๊ฒฐ์ ์ ์งํ ์ํ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๊ฒํ๋ ํ๋กํ ์ฝ์ด๋ค. ์ด๋, ๋ฐ์ดํฐ๋ 'ํจํท(packet)' ํํ๋ก ์ ๋ฌ๋๋ค.
- HTTP์์ ์ฐจ์ด์ ์ผ๋ก ์น์์ผ์ ์๋ฐฉํฅํต์ ์ด๊ณ HTTP๋ ์์ฒญ์ ๋ณด๋ด์ด ๋ฐ๊ณ ์๋ต์ ๋ณด๋ด๋ ๋จ๋ฐฉํฅ ํ๋กํ ์ฝ์ด๋ค.
์ปค๋ฅ์ ๋ง๋ค๊ธฐ
- ์น์์ผ์ ๋ธ๋ผ์ฐ์ ์์ฒด์์ web Socet Api๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ ํจํค์ง ์ค์น ์์ด new ์น์์ผ๋ง ํธ์ถํ์ฌ ์ฌ์ฉํ๋ฉด ๋๋ค.
- ์น์์ผ ์ปค๋ฅ์ ์ ๋ง๋ค๊ธฐ์ํด new WebSocket ์ ํธ์ถํ๋ฉฐ, ์ด๋ ws๋ผ๋ ํน์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ค.
let socket = new WebSocket("ws://javascript.info");
โป ws์ wss
- ws์ wss:// ์ ๊ด๊ณ๋ HTTP์ HTTPS์ ๊ด๊ณ์ ๋น์ทํ๋ค. ์ฃผ๋ก wss://๊ฐ ws๋ณด๋ค ๋ณด์์ฑ๊ณผ ์ ๋ขฐ์ฑ์ด ๋์ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
- ws:// ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ฉด ์ํธํ ๋์ง ์์ ์ํ๋ก ์ ์ก๋์ด ๋ฐ์ดํฐ๊ฐ ๊ทธ๋๋ก ๋ ธ์ถ๋๋ ๋ฌธ์ ๊ฐ ์๋ค.
- wss://๋ TSL( Transport Layer Security)์ด๋ผ๋ ๋ณด์ ๊ณ์ธต์ ํต๊ณผํ์ฌ ์ ์ก๋๊ธฐ ๋๋ฌธ์ ์ก์ ํ๋ ์ชฝ์์ ๋ฐ์ดํฐ๊ฐ ์ํธํ๋์ด ๋๊ฐ๊ณ , ๋ณตํธํ๋ ์์ ์ ์ธก์์ ์ด๋ฃจ์ด์ง๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ๊ฐ ์ํธํ๋์ด ์ ์ก๋๊ธฐ ๋๋ฌธ์ ํจํท ๋ด๋ถ๋ฅผ ๋ณผ ์ ์๊ฒ ๋๋ค.
- ์์ผ์ด ์ ์์ ์ผ๋ก ์์ฑ๋๋ฉด ๋ค ๊ฐ์ ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
• open : ์ปค๋ฅ์ ์ด ์ ๋๋ก ๋ง๋ค์ด์ก์ ๋ ๋ฐ์
• message : ๋ฐ์ดํฐ๋ฅผ ์์ ํ์์ ๋ ๋ฐ์
• error : ์๋ฌ๊ฐ ์๊ฒผ์ ๋ ๋ฐ์
• close : ์ปค๋ฅ์ ์ด ์ข ๋ฃ๋์์ ๋ ๋ฐ์
- ์ปค๋ฅ์ ์ด ๋ง๋ค์ด์ง ์ํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ์ถ์ ๊ฒฝ์ฐ socket.send(data)๋ฅผ ์ฌ์ฉํ๋ค.
- ์์
let socket = new WebSocket("wss://example.com/socket");
// ์ฐ๊ฒฐ ์ฑ๊ณต
socket.onopen = function(event) {
console.log("WebSocket ์ฐ๊ฒฐ์ด ์ด๋ ธ์ต๋๋ค.");
document.getElementById("messages").innerHTML += "<p>์ฐ๊ฒฐ๋์์ต๋๋ค.</p>";
};
// ๋ฉ์์ง๋ฅผ ์์
socket.onmessage = function(event) {
console.log("๋ฉ์์ง๋ฅผ ์์ ํ์ต๋๋ค:", event.data);
document.getElementById("messages").innerHTML += "<p>์๋ฒ๋ก๋ถํฐ ๋ฉ์์ง: " + event.data + "</p>";
};
// ์ค๋ฅ๊ฐ ๋ฐ์
socket.onerror = function(event) {
console.error("WebSocket ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค:", event);
};
// ์ฐ๊ฒฐ ๋ซํ
socket.onclose = function(event) {
console.log("WebSocket ์ฐ๊ฒฐ์ด ๋ซํ์ต๋๋ค.");
document.getElementById("messages").innerHTML += "<p>์ฐ๊ฒฐ์ด ์ข
๋ฃ๋์์ต๋๋ค.</p>";
};
// ๋ฉ์์ง ์ ์ก
document.getElementById("sendButton").onclick = function() {
let message = document.getElementById("inputMessage").value;
socket.send(message);
console.log("๋ฉ์์ง๋ฅผ ๋ณด๋์ต๋๋ค:", message);
document.getElementById("messages").innerHTML += "<p>๋ณด๋ธ ๋ฉ์์ง: " + message + "</p>";
};
์น์์ผ ํ๊ณ
1. HTML5 ์ดํ ๋์จ ๊ธฐ์ ์ด๋ผ HTML5์ด์ ์ ๊ธฐ์ ๋ก ๊ตฌํ๋ ์๋น์ค์์๋ ์น ์์ผ์ ์ฌ์ฉํ ์ ์๋ค.
2. ์น์์ผ์ ํ๋ฒ ์ฐ๊ฒฐ๋๋ฉด ์๋ฌ๋๋ ์ง์ ์ฐ๊ฒฐ์ ๋์ง ์๋ ์ด์ ์ง์์ ์ธ ์ฐ๊ฒฐ์ ์ ์งํ๊ธฐ ๋๋ฌธ์ ์น์์ผ ์ฐ๊ฒฐ์ด ๋ง์์ง๋ฉด ๊ด๋ฆฌํ๋ ์๋ฒ์ ๋ถํ๊ฐ ์ฆ๊ฐํ ์ ์๋ค.
3. ์ฐ๊ฒฐ์ด ๋์ด์ง ๊ฒฝ์ฐ ๊ทธ ์ด์ ์ ๋ํด ์ ํํ ํ์ ํ๊ธฐ ์ด๋ ต๋ค.
** ์ฐธ๊ณ **
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
TIL( TypeScriptํ์ต ) (0) | 2024.06.27 |
---|---|
TIL ( TypeScript ํ์ต) (0) | 2024.06.26 |
TIL (class) (0) | 2024.06.24 |
TIL( ์ฝ๋์ดํดํ๊ธฐ ) (0) | 2024.06.20 |
TIL( TypeErrorํด๊ฒฐ) (0) | 2024.06.19 |