-
Node js 웹소켓(WebSocket)으로 서버-클라이언트 메시지 주고받기 예시DEV/node js 2023. 3. 7. 11:00
Node js (server)
import http from "http"; import WebSocket from "ws"; import express from "express"; const app = express(); app.set("view engine", "pug"); app.set("views", __dirname + "/views"); app.use("/public", express.static(__dirname + "/public")); app.get("/", (req, res) => { res.render("home"); }); app.get("*", (req, res) => { res.redirect("/"); }); const server = http.createServer(app); const wss = new WebSocket.Server({ server }); wss.on("connection", (socket) => { console.log("클라이언트가 연결되었음."); // 이벤트 socket.on("close", () =>{ console.log("클라이언트가 나갔음 ㅠㅠ."); }); socket.on("message", (message) => { console.log("클라이언트로 부터의 메시지 : " + message); }); socket.send('서버에서 보내보는 테스트 메시지'); }); server.listen(3000, () => { console.log(`Listening on http://localhost`); });
javascript (client)
const messageList = document.querySelector("ul"); const messageForm = document.querySelector("form"); const socket = new WebSocket(`ws://${window.location.host}`); // 이벤트 socket.addEventListener("open", () => { console.log("서버에 연결되었음."); }); socket.addEventListener("message", (message) => { console.log("서버로 부터의 메시지 : ", message); }); socket.addEventListener("close", () => { console.log("서버가 종료됨.") }); setTimeout(() => { socket.send("클라이언트에서 보내보는 테스트 메시지"); }, 1000); messageForm.addEventListener("submit", (event) => { event.preventDefault(); const input = messageForm.querySelector('input'); // input의 데이터를 submit 했을 때, 서버로 메시지 전송 socket.send(input.value); });
Full Sample code
https://github.com/Seokhyeon-Park/node-clone-v2
결과
'DEV > node js' 카테고리의 다른 글
dotenv undefined 문제 해결 방법 (0) 2024.03.04 Node js 텔레그램 봇(Telegram bot) 시작하기 (0) 2023.06.28 Node js "command not found: nodemon" (0) 2022.04.18 Node js 노드 시작하기 9 : npm의 버전 및 명령어 (0) 2022.04.18 Node js 노드 시작하기 8 : npm 사용하기 (0) 2022.04.16