melius
[websocket] WebSocket Implementation for Node.js 본문
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.on('request', (WebSocketRequest) => {})
WebSocketServer.on('connect', (WebSocketRequest) => {})
WebSocketServer.on('close', (WebSocketRequest) => {})
WebSocketRequest.accept()
- Parameters: acceptedProtocol, allowedOrigin
- Returns: WebSocketConnection
WebSocketRequest.reject()
- Parameters: [httpStatus], [reason]
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 |