[javascript] Socket.io를 사용하여 실시간 영화 예매 시스템을 어떻게 구현할 수 있나요?
Socket.io를 사용하여 실시간 영화 예매 시스템 구현하기
Socket.io는 실시간 웹 기능을 구현하기 위해 사용되는 라이브러리입니다. 이를 이용하여 영화 예매 시스템을 실시간으로 업데이트할 수 있습니다. 이제 Socket.io를 사용하여 실시간 영화 예매 시스템을 어떻게 구현할 수 있는지 알아보겠습니다.
단계 1: 프로젝트 설정
먼저 Node.js와 Express 프레임워크를 사용하여 기본적인 프로젝트 구조를 설정합니다. 아래 명령어를 사용하여 Express 애플리케이션을 생성합니다.
$ mkdir movie-booking-system
$ cd movie-booking-system
$ npm init
$ npm install express --save
단계 2: Socket.io 설정
다음으로 Socket.io를 설치하고 설정합니다. 아래 명령어를 사용하여 Socket.io를 설치합니다.
$ npm install socket.io --save
그리고 app.js
파일에 아래 코드를 추가하여 Socket.io를 초기화합니다.
const express = require('express');
const app = express();
const http = require('http').Server(app);
const io = require('socket.io')(http);
// Socket.io 코드 작성
// ...
http.listen(3000, () => {
console.log('Server is running on port 3000');
});
단계 3: 실시간 예매 업데이트
이제 Socket.io를 사용하여 실시간 예매 업데이트를 구현할 수 있습니다. 클라이언트가 예매를 진행할 때마다 서버로 해당 정보를 전송하고, 서버는 이를 다른 모든 연결된 클라이언트에게 브로드캐스팅하여 실시간으로 예매 내역을 업데이트합니다.
io.on('connection', (socket) => {
console.log('A user connected');
// 예매 정보 전송
socket.on('booking', (bookingInfo) => {
// 예매 정보를 다른 클라이언트에게 브로드캐스팅
socket.broadcast.emit('bookingUpdate', bookingInfo);
});
// 연결 해제
socket.on('disconnect', () => {
console.log('A user disconnected');
});
});
단계 4: 클라이언트 구현
이제 클라이언트에서 Socket.io를 사용하여 실시간 예매 업데이트를 받아올 수 있도록 구현합니다. 예매 정보가 업데이트될 때마다 클라이언트는 해당 정보를 받아올 수 있습니다.
// index.html
<!DOCTYPE html>
<html>
<head>
<title>Movie Booking System</title>
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();
// 실시간 예매 업데이트를 받아옴
socket.on('bookingUpdate', (bookingInfo) => {
// 예매 정보를 사용하여 UI를 업데이트
// ...
});
// 예매 진행 시 서버로 정보를 전송
function bookMovie(movieId) {
const bookingInfo = {
movieId: movieId,
// 추가 정보
};
socket.emit('booking', bookingInfo);
}
</script>
</head>
<body>
<!-- 영화 목록 -->
<!-- <button onclick="bookMovie(movieId)">예매</button> -->
</body>
</html>
위와 같은 방식으로 Socket.io를 사용하여 실시간 영화 예매 시스템을 구현할 수 있습니다. 클라이언트에서 예매 진행 시 서버로 정보를 전송하고, 서버는 해당 정보를 다른 클라이언트에게 브로드캐스팅하여 실시간으로 예매 내역을 업데이트합니다.
더 많은 정보는 Socket.io 공식 문서를 참고하시기 바랍니다.