최근에는 실시간으로 정보를 전달하는 애플리케이션의 필요성이 높아지고 있습니다. 이를 위해 웹 소켓(WebSocket)을 사용하여 실시간 채팅 앱을 개발할 수 있습니다. 웹 소켓은 서버와 클라이언트 간 양방향 통신을 제공하며, 소켓 연결이 유지되는 동안 실시간 데이터를 주고받을 수 있습니다.
이 블로그 포스트에서는 자바스크립트를 사용하여 웹 소켓을 활용한 실시간 채팅 애플리케이션을 개발하는 방법을 알아보겠습니다.
1. 웹 소켓 서버 설정하기
먼저, 웹 소켓 서버를 설정해야 합니다. 여기서는 Node.js와 Express 프레임워크를 사용하여 웹 소켓 서버를 구현하겠습니다.
const express = require('express');
const http = require('http');
const WebSocket = require('ws');
const app = express();
const server = http.createServer(app);
const wss = new WebSocket.Server({ server });
wss.on('connection', (ws) => {
// 웹 소켓 연결 시 처리할 로직 작성
});
server.listen(3000, () => {
console.log('웹 소켓 서버가 3000번 포트에서 실행 중입니다.');
});
위의 코드에서 wss.on('connection', ...)
부분에는 웹 소켓 연결이 생성되었을 때 처리할 로직을 작성하면 됩니다.
2. 웹 소켓 클라이언트 구현하기
웹 소켓 클라이언트를 구현하기 위해 JavaScript의 WebSocket
객체를 사용할 수 있습니다. 클라이언트 측에서 웹 소켓을 사용하여 서버와 연결하고, 데이터를 주고받을 수 있습니다.
const socket = new WebSocket('ws://localhost:3000');
socket.onopen = () => {
// 웹 소켓 연결이 성공하였을 때 처리할 로직 작성
};
socket.onmessage = (event) => {
// 서버로부터 메시지를 받았을 때 처리할 로직 작성
};
socket.onclose = () => {
// 웹 소켓 연결이 종료되었을 때 처리할 로직 작성
};
function sendMessage(message) {
socket.send(message); // 서버로 메시지를 보냄
}
위의 코드에서 socket.onopen
, socket.onmessage
, socket.onclose
등의 이벤트 핸들러를 정의하여 웹 소켓 연결 상태 및 서버로부터 받은 메시지를 처리할 수 있습니다. sendMessage()
함수를 통해 서버로 메시지를 보낼 수 있습니다.
3. 실시간 채팅 애플리케이션 개발하기
이제 실시간 채팅 애플리케이션을 개발할 차례입니다. 웹 소켓을 통해 서버와 클라이언트 간 메시지를 주고받아 채팅 기능을 구현할 수 있습니다.
const express = require('express');
const http = require('http');
const WebSocket = require('ws');
const app = express();
const server = http.createServer(app);
const wss = new WebSocket.Server({ server });
wss.on('connection', (ws) => {
ws.on('message', (message) => {
// 클라이언트로부터 메시지를 받았을 때 처리할 로직 작성
wss.clients.forEach((client) => {
if (client.readyState === WebSocket.OPEN) {
client.send(message); // 모든 클라이언트에게 메시지를 보냄
}
});
});
});
server.listen(3000, () => {
console.log('웹 소켓 서버가 3000번 포트에서 실행 중입니다.');
});
위의 코드에서 ws.on('message', ...)
부분에는 클라이언트로부터 메시지를 받았을 때 처리할 로직을 작성하면 됩니다. 해당 메시지를 모든 클라이언트에게 전송하는 방식으로 실시간 채팅을 구현할 수 있습니다.
결론
이렇게 자바스크립트 웹 소켓을 활용하여 실시간 채팅 애플리케이션을 개발할 수 있습니다. 웹 소켓을 사용하면 서버와 클라이언트 간의 실시간 양방향 통신을 쉽게 구현할 수 있으며, 이를 활용하여 다양한 실시간 애플리케이션을 개발할 수 있습니다.