서버 점검 안내

dsclub은 서비스의 안정성과 성능 향상을 위해
매일 04시 30분에 정기 점검이 진행됩니다.

점검 시간: 오전 4시 30분 ~ 4시 35분

해당 시간 동안 일시적으로 서비스에 접속이 불가능하오니, 양해 부탁드립니다.

php와 node.js, 웹소캣을 활용하고 데이터베이스를 이용하지 않는 외부 도메인에서 실행되는 실시간 채팅 코드 예제 > 코딩 스토리

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 이 글을 좋아요하셨습니다
url 복사 카카오톡 공유 라인 공유 페이스북 공유 트위터 공유

2kat님의 댓글

no_profile 2kat 아이피 (000.♡.000.000) 작성일

감사합니다.

전체 282건
게시물 검색

접속자집계

오늘
844
어제
977
최대
4,271
전체
318,751