내맘대로 라이프

nodejs를 이용하여 wss 서버 설치하기 본문

Html5 JS CSS

nodejs를 이용하여 wss 서버 설치하기

내눈물 2020. 8. 18. 15:24

1. nodejs를 설치한다

https://nodejs.org/ko/download/ 

 

다운로드 | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

2. 서버로 사용할 폴더를 생성한다

  ex) C:\nodejs\server\temp

 

3. 커맨드창을 열어 해당 폴더에 들어간다 (Win+R누른후 cmd 엔터)

 1) cd\

 2) cd nodejs

 3) cd server

 4) cd temp

 5) npm init (노드js 초기 설정)

 

4. websocket 설치

 6) npm install websocket

 

5. ssl폴더 생성

 

6. 아래 링크 참조하여 인증서 만들기

https://mytears.tistory.com/80

 

apmsetup을 활용한 https 서버 설치하기

1. apmsetup을 설치한다. 2. C:\APM_Setup\Server\Apache\bin 폴더에 ssleay32.dll libeay32.dll openssl.exe 파일을 붙여 넣는다 3. openssl을 설치한다 http://slproweb.com/products/Win32OpenSSL.html Win..

mytears.tistory.com

참조

 

7. html파일 생성

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
let WebSocketServer = require('websocket').server;
let https = require('https');
let port = 1199;
 
let fs = require('fs');
let pkey = fs.readFileSync("ssl/dev_ssl.key");
let pcert = fs.readFileSync("ssl/dev_ssl.crt");
let serverOptions = {
    key : pkey,
    cert : pcert
};
 
let server = https.createServer(
    serverOptions,
    function(request, response) {
        console.log((new Date()) + ' Received request for ' + request.url);
        response.writeHead(404);
        response.end();
});
 
server.listen(port, function() {
    console.log((new Date()) + ' Server is listening on port'+port);
});
 
let wsServer = new WebSocketServer({
    httpServer: server,
    ssl: true,
    key: pkey,
    cert: pcert
    });
 
wsServer.on("request",function(request){
    var connection = request.accept();
    connection.on('message'function(message) {
        connection.sendUTF(message.utf8Data);
        console.log(message.utf8Data);
    });
});
 
cs

8. 커맨드 창에서 node index.js 실행

9. 테스트용 웹페이지 제작

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<!DOCTYPE html>
<meta charset="utf-8" />
<title>WebSocket 테스트</title>
<script language="javascript" type="text/javascript">
 
    var wsUri = "wss://server.testbird.kro.kr:1199/";
    //var wsUri = "wss:192.168.0.5:1199";
    var output;
 
    function init()
    {
        output = document.getElementById("output");
        testWebSocket();
    }
 
    function testWebSocket()
    {
        websocket = new WebSocket(wsUri);
        websocket.onopen = function(evt) { onOpen(evt) ;};
        websocket.onclose = function(evt) { onClose(evt) };
        websocket.onmessage = function(evt) { onMessage(evt) };
        websocket.onerror = function(evt) { onError(evt) };
    }
 
    function onOpen(evt)
    {
        writeToScreen("연결완료");
        doSend("Test");
    }
 
    function onClose(evt)
    {
        writeToScreen("연결해제");
    }
 
    function onMessage(evt)
    {
        writeToScreen('<span style="color: blue;">수신: ' + evt.data+'</span>');
        websocket.close();
    }
 
    function onError(evt)
    {
        writeToScreen('<span style="color: red;">에러:</span> ' + evt.data);
    }
 
    function doSend(message)
    {
        writeToScreen("발신: " + message);
        websocket.send(message);
    }
 
    function writeToScreen(message)
    {
        var pre = document.createElement("p");
        pre.style.wordWrap = "break-word";
        pre.innerHTML = message;
        output.appendChild(pre);
    }
 
    window.addEventListener("load", init, false);
 
</script>
    <body>
        <h2>WebSocket Test</h2>
        <div id="output"></div>
    </body>
</html>
 

cs