Node.js에서 Socket.IO: 실시간 양방향 통신

김형진·2024년 2월 22일
0

Node.js

목록 보기
15/17
post-thumbnail

Socket.IO는 실시간 양방향 통신을 가능하게 하는 JavaScript 라이브러리입니다. 주로 웹 소켓을 기반으로 작동하며, 실시간 웹 애플리케이션을 개발할 때 사용됩니다.

Socket.IO의 주요 기능

Socket.IO는 다음과 같은 주요 기능을 제공합니다.

1. 실시간 양방향 통신
Socket.IO를 사용하면 서버와 클라이언트 간에 실시간으로 데이터를 주고받을 수 있습니다. 이를 통해 실시간 채팅, 멀티플레이어 게임 등의 어플리케이션을 개발할 수 있습니다.

2. 이벤트 기반 통신
Socket.IO는 이벤트 기반으로 동작합니다. 서버나 클라이언트에서 이벤트를 발생시키고, 해당 이벤트를 수신하여 처리할 수 있습니다. 이는 간편하고 유연한 통신을 가능하게 합니다.

3. 신뢰성 있는 연결 관리
Socket.IO는 연결 유지와 관련된 다양한 기능을 제공하여 안정적인 통신을 보장합니다. 연결이 끊겼을 때 자동으로 재연결을 시도하거나, 연결 상태를 모니터링하는 등의 기능이 있습니다.

Socket.IO의 활용

Socket.IO는 다양한 실시간 웹 애플리케이션에서 활용됩니다.

1. 실시간 채팅 애플리케이션
가장 일반적으로 볼 수 있는 예시 중 하나는 실시간 채팅 애플리케이션입니다. 사용자 간에 메시지를 실시간으로 전송하고 받아오는 기능을 구현할 수 있습니다.

2. 실시간 게임
멀티플레이어 게임에서도 Socket.IO가 널리 사용됩니다. 플레이어들 간의 상호작용을 실시간으로 처리하여 게임 플레이 경험을 향상시킬 수 있습니다.

예제

클라이언트가 메시지를 입력하면 서버를 통해 다른 클라이언트로 전송되고, 받은 메시지는 모든 클라이언트에서 실시간으로 표시됩니다.

서버 (Node.js)

var http = require('http');
var express = require('express');
var app = express();
var socketio = require('socket.io');
var cors = require('cors');

app.use(cors());
app.use(express.static('public'));

var server = http.createServer(app).listen(3000, function() {
    console.log('서버가 시작되었습니다. http://127.0.0.1:' + 3000);
});

var io = socketio(server);

io.sockets.on('connection', function(socket) {
    console.log('클라이언트 소켓 접속 성공!');

    socket.on('message', function(data) {
        console.log('클라이언트 메세지:', data);
    });
    socket.emit('news', {sender:"server", "message":"오늘의 날씨"});
});

클라이언트(웹 페이지)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Socket.IO 채팅 프로그램</title>
</head>
<body>
    
<h1>Socket.IO 채팅 프로그램</h1>

<script src="https://cdn.socket.io/4.5.4/socket.io.min.js"></script>
<script>
    var socket = io('http://localhost:3000');
    socket.on('connect', function(data) {
        console.log('서버 접속 성공!');
        socket.emit('message', {sender:"hong", message:"Hello"});

        socket.on('news', function(data){
            console.log('서버가 보낸 뉴스:', data);
        });
    });
</script>

</body>
</html>

0개의 댓글