반응형

리눅스에 nodejs를 설치한다. 버전은 알아서 설치한다. 나는 8.x 이다..

 

그리고 npm을 이용해서 socket.io를 설치한다.

 

npm install socket.io

 

소켓이 작동할 수 있도록 파일을 생성한다.

 

socket.js

 

var http = require('http');
var fs = require('fs');
var socketio = require('socket.io');

var server = http.createServer(function(req, res){
        fs.readFile('index.html', 'utf8', function(err, data){
        res.writeHead(200, {'Content-Type':'text/html'});
        res.end(data);
    });
}).listen(8888, function(){
    console.log('Running ~~~~~~~~~~~~');
});

var io = socketio(server);
io.sockets.on('connection', function(socket){
        socket.on('sMsg', function(data){
console.log(data);
        io.sockets.emit('rMsg', data);
    });
});

 

위 소스를 보면 index.html 이 필요하다. socket.js와 index.html은 같은 경로에 있는게 좋다..

 

index.html 

 

<!DOCTYPE>
<html>
<head>
    <style>
        #container {
            width: 400px;
     border: 1px dotted #000;
     padding: 10px;
     height: 328px;
        }
        #chatBox {
            border: 1px solid #000;
     width: 400px;
     height: 300px;
            margin-bottom: 5px;
        }
        #chat li {
            padding: 5px 0px;
        }
        #name {
     width: 78px;
        }
        #msg {
     width: 256px;
        }

    </style>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.5/socket.io.min.js"></script>
    <script type="text/javascript">
        window.onload = function(){
            var socket = io.connect();
            if(socket != null && socket != undefined){
                var welcome = document.createElement('li');
                welcome.innerHTML = '<system> Start Chatting';
                document.getElementById('chat').appendChild(welcome);

                socket.on('rMsg', function(data){
                    var li = document.createElement('li');
                    li.innerHTML = data.name + ' : ' + data.msg;
                    document.getElementById('chat').appendChild(li);
                });

                document.getElementById('submit').onclick = function(){
                    var val = document.getElementById('msg').value;
                    var name = document.getElementById('name').value;
                    socket.emit('sMsg', {
                        name : name,
                        msg : val
                    });
                    document.getElementById('msg').value = '';
                };

            }
        };
    </script>
</head>
<body>
<div id="container">
    <div id="chatBox">
        <ul id="chat"></ul>
    </div>
    <input type="text" id="name"/>
    <input type="text" id="msg"/>
    <button id="submit">Chat</button>
</div>
</body>
</html>

 

이렇게하고 리눅스 콘솔에서

 

node socket.js

 

실행 후 

 

localhost:8888

 

로 접속해보면 된다..

 

창을 여러개 띄워서 채팅을 해보자....

반응형

+ Recent posts