본문 바로가기
JavaScript

[JavaScript] Web Socket (웹소켓)

by 꾸압 2022. 5. 23.

 

<정의>

web 통신의 기본은 http로, 서버와 client 가 http 라는 카톡을 서로 주고 받았다.

이 소통의 한계는 server가 절대 선톡(먼저 연락)을 안 한다는 것. 

server 의 상황이나 근황을 알려면 반드시 client가 먼저 선톡해야 한다.

게임이나 주식 단타를 하는 중일 때 client 가 가만히 있어도 server에서 지속적으로 연락받는 방법이 바로 Web Socket.

 


 

<예제 코드>

먼저 vscode colsole 에 다음을 install 한다.

npm install express (서버 형성 라이브러리)

npm install ws (웹소켓 연결 라이브러리)

 

[server.js]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// server 연결 
const express = require('express');
const app = express();
 
app.use("/"function(req, res) {
    res.sendFile(__dirname + '/index.html');
});
 
app.listen(8080);
 
// web socket 연결
const WebSocket = require('ws');
 
const socket = new WebSocket.Server({
    port: 8081
});
 
// web socket에서 오는 통신 수신
socket.on('connection', (ws, req) => {
    ws.on('message', (msg) => {
        console.log('유저가 보낸 것 : ' + msg);
        // server to user
        ws.send('Hey ya');
    })
})
 
 
/*ws 대신 socket.io 라이브러리를 사용 가능
- 연결이 끊기면 자동 재접속 기능
- 모든 socket user에게 전체 msg 전송 가능
- websocket room 생성 가능
*/
cs

 

 

[index.html]

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE-edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h4>Chat Page</h4>
    <!-- 버튼 클릭시 서버에 전송-->
    <button id="send" onclick="socket.send('Hi there, pal')">Send MSG</button>
 
    <!-- server에 websocket 요청-->
    <script>
        let socket = new WebSocket("ws://localhost:8081")
    </script>
</body>
</html>
cs

 


 

<참조>

https://www.youtube.com/watch?v=yXPCg5eupGM

 

 

댓글