소프트웨어 이론교육/웹 프로그래밍 기본

socket.io를 이용한 데이터 전송

마루설아 2022. 7. 29. 14:46

server.js

const http = require('http');
const express = require('express');
const app = express();
const cors = require('cors');
const socketio = require('socket.io');

// public 폴더 static 설정
app.use(express.static(__dirname + '/public'));

app.get("/", (req, res)=> {
    res.end("<h1>Hello Nodejs World</h1>")
});

const server = http.createServer(app);
server.listen(3000, ()=>{
    console.log("run on Server : http://localhost:3000")
});

const io = socketio.listen(server);

// 클라이언트 접속이 되면 실행
io.sockets.on('connection', function(socket){
    // socket 매개 변수 - 클라이언트 소켓
    console.log(">>>>> 클라이언트 소켓 접속!!!");

    // socket.emit('news', 'hello');
    socket.on('client-message', function(data){
        //console.log("client message : ", data);
        io.sockets.emit('news', data);
    });
});

 

 

ex08 socket.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #messageBox{
            border: 1px solid black;
            width: 400px;
            height: 200px;
            background-color: beige;
        }
    </style>
</head>
<body>
    <div id="messageBox">-- 메세지를 입력하세요 --</div>
    <input type="text" value="hello world" id="messageInput">
    <input type="button" value="전송" id="sendBtn">

    <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.5.0/socket.io.js"></script> -->
    <script src="http://localhost:3000/socket.io/socket.io.js"></script>
    <script>
        var messageInput = document.querySelector("#messageInput");
        var sendBtn = document.querySelector("#sendBtn");
        var messageBox = document.querySelector("#messageBox");

        const socket = io.connect('http://localhost:3000');
        socket.on('connect', function(data){
            console.log("서버 소켓과 연결됨");
            messageBox.innerHTML += "<br /> 서버 소켓과 연결되었습니다.";

            sendBtn.onclick = (e) =>{
                var message = messageInput.value;

                socket.emit('client-message', {sender: 'user01', message: message});
            }

            socket.on('news', function(data){
                //console.log(data);
                messageBox.innerHTML += "<br>" + data['sender'] + " : " + data['message'];
            });
        });
    </script>
</body>
</html>

 

 

http://localhost:3000/ex08 socket.html