Socket.IO는 실시간 양방향 통신을 가능하게 하는 JavaScript 라이브러리입니다. 주로 웹 소켓을 기반으로 작동하며, 실시간 웹 애플리케이션을 개발할 때 사용됩니다.
Socket.IO는 다음과 같은 주요 기능을 제공합니다.
1. 실시간 양방향 통신
Socket.IO를 사용하면 서버와 클라이언트 간에 실시간으로 데이터를 주고받을 수 있습니다. 이를 통해 실시간 채팅, 멀티플레이어 게임 등의 어플리케이션을 개발할 수 있습니다.
2. 이벤트 기반 통신
Socket.IO는 이벤트 기반으로 동작합니다. 서버나 클라이언트에서 이벤트를 발생시키고, 해당 이벤트를 수신하여 처리할 수 있습니다. 이는 간편하고 유연한 통신을 가능하게 합니다.
3. 신뢰성 있는 연결 관리
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>