[javascript] Socket.io를 사용하여 실시간 스포츠 스코어 보드를 어떻게 구현할 수 있나요?

Socket.io를 사용하여 실시간 스포츠 스코어 보드 구현하기

실시간 스포츠 스코어 보드를 구현하기 위해 Socket.io를 사용할 수 있습니다. Socket.io는 실시간 양방향 통신을 가능하게 해주는 JavaScript 라이브러리입니다.

Socket.io 설치하기

먼저, 프로젝트 폴더에서 다음 명령어를 사용하여 Socket.io를 설치하세요.

$ npm install socket.io

서버 구현하기

서버 측에서 Socket.io를 사용하여 실시간 스코어를 업데이트할 수 있습니다. 다음은 서버 구현의 예시입니다.

const http = require('http');
const socketIo = require('socket.io');

const server = http.createServer();
const io = socketIo(server);

let currentScore = 0;

io.on('connection', (socket) => {
  console.log('새로운 클라이언트 연결됨');

  // 클라이언트로부터 스코어 업데이트 요청을 받았을 경우
  socket.on('update score', (score) => {
    currentScore = score;

    // 업데이트된 스코어를 모든 클라이언트에게 전송
    io.emit('score updated', currentScore);
  });

  // 클라이언트 연결이 끊겼을 경우
  socket.on('disconnect', () => {
    console.log('클라이언트 연결 해제됨');
  });
});

server.listen(3000, () => {
  console.log('서버가 3000번 포트에서 실행 중');
});

위 예제에서는 클라이언트로부터 update score 이벤트로 스코어 업데이트 요청을 받고, 업데이트된 스코어를 score updated 이벤트로 모든 클라이언트에게 전송합니다.

클라이언트 구현하기

클라이언트 측에서도 Socket.io를 사용하여 서버로부터 스코어 업데이트를 실시간으로 받아올 수 있습니다. 다음은 클라이언트 구현의 예시입니다.

<!DOCTYPE html>
<html>
  <head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.1/socket.io.js"></script>
  </head>
  <body>
    <h1>스포츠 스코어 보드</h1>
    <div id="score-container">
      현재 스코어: <span id="current-score">0</span>
    </div>

    <script>
      const socket = io();

      // 서버로부터 스코어 업데이트를 받았을 경우
      socket.on('score updated', (score) => {
        document.getElementById('current-score').textContent = score;
      });
    </script>
  </body>
</html>

위 예제에서는 Socket.io 클라이언트 스크립트를 HTML 파일에 포함시키고, 서버로부터 받은 업데이트된 스코어를 화면에 출력합니다.

실행하기

서버 파일과 클라이언트 HTML 파일을 준비한 뒤, 다음 순서로 실행해보세요.

  1. 터미널에서 서버 파일이 있는 디렉토리로 이동하여 $ node server.js 명령어를 실행합니다.
  2. 웹 브라우저에서 클라이언트 HTML 파일을 엽니다.
  3. 서버와 클라이언트의 연결이 성공하면, 스코어를 업데이트하고 변경된 스코어가 실시간으로 클라이언트에 반영됩니다.

이제 Socket.io를 사용하여 실시간 스포츠 스코어 보드를 구현할 수 있습니다!

참고 자료