php와 node.js, 웹소캣을 활용하고 데이터베이스를 이용하지 않는 외부 도메인에서 실행되는 실시간 채팅 코드 예제
페이지 정보
작성자 (192.♡.0.1) 작성일 23-07-15 22:33 조회 5,559 댓글 1본문
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 '메시지 전송에 실패했습니다.'; } } } ?>
좋아요60
이 글을 좋아요하셨습니다
2kat님의 댓글
2kat 아이피 (000.♡.000.000) 작성일감사합니다.