php와 node.js, 웹소캣을 활용하고 데이터베이스를 이용하지 않는 외부 도메인에서 실행되는 실시간 채팅 코드 예제
본문
php와 node.js, 웹소캣을 활용하고 데이터베이스를 이용하지 않는 외부 도메인에서 실행되는 실시간 채팅 코드 예제
ChatGPT
PHP, Node.js, 웹 소켓을 활용하여 데이터베이스를 사용하지 않는 외부 도메인에서 실행되는 간단한 실시간 채팅 코드 예제를 제공하겠습니다. 이 예제에서는 웹 소켓을 사용하여 실시간 통신을 구현하고, 데이터베이스 없이 메모리에 채팅 메시지를 저장하여 처리합니다.
1. 웹 소켓 서버(Node.js) 코드:
먼저, Node.js 환경에 express와 socket.io 모듈을 설치해야 합니다.
bashCopy code
# Node.js 환경에서 실행 npm install express socket.io
이제 웹 소켓 서버를 구축하는 코드를 작성합니다.
javascriptCopy code
// server.js const express = require('express'); const app = express(); const http = require('http').createServer(app); constio = require('socket.io')(http); // 채팅 메시지를 저장할 배열 constchatMessages = []; // 정적 파일 제공 (index.html을 클라이언트로 제공)app.use(express.static('public')); // 웹 소켓 연결 이벤트io.on('connection', (socket) => { console.log('새로운 사용자가 연결되었습니다.'); // 클라이언트가 채팅 메시지를 보낼 때의 이벤트 처리socket.on('chat message', (message) => { console.log('받은 메시지: ' + message); // 채팅 메시지를 배열에 저장 chatMessages.push(message);// 모든 클라이언트에게 메시지 전송 io.emit('chat message', message); });// 클라이언트가 연결을 해제할 때의 이벤트 처리 socket.on('disconnect', () => { console.log('사용자가 연결을 해제했습니다.'); }); }); const port = 3000; http.listen(port, () => { console.log(`웹 소켓 서버가 포트 ${port}에서 실행중입니다.`); });
2. 클라이언트 (HTML, JavaScript, PHP) 코드:
htmlCopy code
<!-- index.html --> <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"> <meta name="viewport"content="width=device-width, initial-scale=1.0"> <title>실시간 채팅</title> </head> <body> <h1>실시간 채팅</h1> <ul id="messages"></ul> <form id="chat-form"> <input type="text" id="input-message" autocomplete="off" /> <button>전송</button> </form><script src="/socket.io/socket.io.js"></script> <script> constsocket = io(); const messages = document.getElementById('messages'); const inputMessage = document.getElementById('input-message'); functionappendMessage(message) { const li = document.createElement('li'); li.textContent = message; messages.appendChild(li); } // 채팅 메시지를 받을 때의 이벤트 처리socket.on('chat message', (message) => { appendMessage(message); }); // 폼 제출 시 메시지 전송 document.getElementById('chat-form').addEventListener('submit', (e) => { e.preventDefault();const message = inputMessage.value.trim(); if (message) { socket.emit('chat message', message); inputMessage.value = ''; } }); </script> </body> </html>
phpCopy code
<!-- send_message.php --> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $message = $_POST['message']; if (!empty($message)) { // Node.js 서버로 채팅 메시지 전송 $url = 'http://localhost:3000';$data = array('message' => $message); $options = array( 'http'=> array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => http_build_query($data), ), ); $context = stream_context_create($options); $result = file_get_contents($url, false, $context); if ($result === false) { echo '메시지 전송에 실패했습니다.'; } } } ?>
좋아요100
이 글을 좋아요하셨습니다
카테고리 분류 학습 시스템 (총 0개 학습됨)
예측 카테고리:
정치
(랜덤 - 학습 데이터 없음)
이 분류가 맞나요? 학습시켜주세요!
2kat님의 댓글
감사합니다.