Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Tags
more
Archives
Today
Total
관리 메뉴

melius

[websocket] WebSocket Implementation for Node.js 본문

library & framework

[websocket] WebSocket Implementation for Node.js

melius102 2020. 2. 11. 20:43

https://github.com/theturtle32/WebSocket-Node

https://github.com/theturtle32/WebSocket-Node/blob/master/docs/index.md

 

websocket는 Node.js에서 WebSocket 통신을 가능하게 해주는 모듈이다.

 

설치

$ npm install websocket

 

 

WebSocket 서버 실행

const WebSocketServer = require('websocket').server;
const http = require('http');
const port = 3000;

let server = http.createServer(function (req, res) {
    res.writeHead(404);
    res.end();
});

server.listen(port, function () {
    console.log(' Server is listening on http://192.168.0.61:' + port);
});

wsServer = new WebSocketServer({
    httpServer: server,
    autoAcceptConnections: false
});

 

 

이벤트 핸들러 구현

autoAcceptConnections 의 값이 false로 설정되면 새로운 WebSocketRequest가 만들어 질때 마다 서버는 request 이벤트를 발생시킨다. WebSocketRequest.accept() 메소드로 요청을 수락할 수도 있고, WebSocketRequest.reject() 메소드로 요청을 거절할 수도 있다.

wsServer.on('request', function (request) {
    // if (!originIsAllowed(request.origin)) {
    //     request.reject();
    // }

    var connection = request.accept('echo-protocol', request.origin);
    connection.on('message', function (message) {
        if (message.type === 'utf8') {
            let data = message.utf8Data;
            // ...
            connection.sendUTF(data);
        } else if (message.type === 'binary') {
            let data = message.binaryData.length;
            // ...
            connection.sendBytes(data);
        }
    });
    connection.on('close', function (reasonCode, description) {
        console.log(connection.remoteAddress + ' disconnected.');
    });
});

연결이 허락되어 클라이언트에서 데이터를 보내면 message 이벤트가 발생한다.

 

 

WebSocketServer

WebSocketServer.on('request', (WebSocketRequest) => {})

WebSocketServer.on('connect', (WebSocketRequest) => {})

WebSocketServer.on('close', (WebSocketRequest) => {})

 

WebSocketRequest

WebSocketRequest.accept()

- Parameters: acceptedProtocol, allowedOrigin

- Returns: WebSocketConnection

WebSocketRequest.reject()

- Parameters: [httpStatus], [reason]

 

WebSocketConnection

WebSocketConnection.sendUTF()

- Parameters: string

WebSocketConnection.sendBytes()

- Parameters: buffer

WebSocketConnection.send()

- Parameters: data (auto-detect the data type)

WebSocketConnection.on('message', (message) => {})

- Event Handler Argument: message

- {type: "utf8", utf8Data} or {type: "binary", binaryData}

WebSocketConnection.on('close', (reasonCode, description) => {})

 

 

'library & framework' 카테고리의 다른 글

[jQuery] 선택자  (0) 2020.02.21
[React] 기본구조  (0) 2020.02.21
[ws] Node.js WebSocket library  (0) 2020.02.03
[Firebase] 클라우드 함수 사용하기  (0) 2020.01.15
[Handlebars] 사용법  (0) 2020.01.15
Comments