Node.js와 함께 사용할 웹 소켓 라이브러리는 무엇입니까? [닫은]
현재 node.js에 대한 수많은 웹 소켓 라이브러리 가 있으며 가장 인기있는 것으로 보입니다.
- https://github.com/Worlize/WebSocket-Node
- https://github.com/einaros/ws
- https://github.com/LearnBoost/engine.io
- https://github.com/learnboost/socket.io
- https://github.com/sockjs
그러나 나는 그들 사이의 확실한 비교를 찾을 수 없습니다 ... 분명히 Socket.io는 훌륭했지만 꽤 오래되었지만 빌드가 실패했습니다. ws와 websocket-node는 모두 가장 빠르다고 주장합니다. 그리고 engine.io는 새로운 것처럼 보이지만 더 가벼운 aletarntives보다 훨씬 무겁습니다.
우리 또는 누군가가 어떤 소켓 라이브러리를 언제 그리고 언제 사용할 지에 대한 가이드 역할을하고 그들 사이의 비교를 제공하는 답변을 모을 수 있다면 놀랍습니다.
이 커뮤니티 위키 답변으로 볼을 구르십시오 . 당신의 개선 사항으로 저 를 자유롭게 편집 하십시오.
node.js를위한 ws WebSocket 서버 및 클라이언트. 가장 빠른 라이브러리가 아닌 경우 가장 빠른 라이브러리 중 하나입니다.
node.js 용 websocket-node WebSocket 서버 및 클라이언트
websocket-driver-node WebSocket 서버 및 클라이언트 프로토콜 파서 node.js-faye-websocket-node에서 사용
faye-websocket-node node.js 용 WebSocket 서버 및 클라이언트-faye 및 sockjs에 사용
socket.io WebSocket 서버 및 node.js 용 클라이언트 + 브라우저 용 클라이언트 + (v0은 최신 폴백을 사용하고 v1은 socket.io v1은 engine.io를 사용합니다) + 채널-stack.io에 사용됩니다. 연결 해제시 클라이언트 라이브러리가 다시 연결을 시도합니다.
sockjs WebSocket 서버 및 node.js 용 클라이언트 및 기타 + 브라우저 용 클라이언트 + 최신에서 가장 오래된 폴백
faye WebSocket 서버 및 node.js 용 클라이언트 및 기타 + 브라우저 용 클라이언트 + 대체 + 다른 서버 측 언어 지원
WebSocket 및 TCP 연결을 처리하고 데이터 동기화, 펍 / 서브 및 요청 / 응답을 제공하는 deepstream.io 클러스터 가능 실시간 서버
시스템 의 모든 CPU 코어를 사용하는 socketcluster WebSocket 서버 클러스터. 예를 들어 32 개의 코어가있는 xlarge Amazon EC2 인스턴스를 사용하는 경우 단일 인스턴스에서 거의 32 배의 트래픽을 처리 할 수 있습니다.
primus 쉽게 전환하고 모든 라이브러리의 안정성을 향상시키기 위해 위의 대부분의 라이브러리에 공통 API를 제공합니다.
사용시기 :
클라이언트 측에서 기본 WebSocket 구현을 사용하려는 경우 기본 WebSocket 서버를 사용하고 브라우저 비 호환성에 주의하십시오
브라우저 폴백에 관심이있을 때 폴백 라이브러리 사용
채널에 관심이있을 때 모든 기능을 갖춘 라이브러리를 사용하십시오.
무엇을 사용해야할지 모르거나 프로젝트 요구 사항 변경으로 인해 프레임 워크를 전환해야하거나 추가 연결 안정성이 필요할 때 응용 프로그램을 다시 작성하려는 마음이 들지 않는 경우 프리머스를 사용하십시오.
테스트 할 곳 :
Firecamp 는 SocketIO, WS 및 모든 주요 실시간 기술을위한 GUI 테스트 환경입니다. 실시간 이벤트를 개발하는 동안 디버깅하십시오.
업데이트 : 언급 된 최신 버전의 라이브러리가 그 이후로 릴리스 되었으므로이 답변은 구식입니다.
Socket.IO v0.9는 구식이며 약간 버그가 있으며 Engine.IO는 임시 후속 작업입니다. Socket.IO v1.0 (곧 출시 될 예정)은 Engine.IO를 사용하며 v0.9보다 훨씬 우수합니다. Socket.IO v1.0이 출시 될 때까지 Engine.IO를 사용하는 것이 좋습니다.
"ws"는 폴백을 지원하지 않으므로 클라이언트 브라우저가 웹 소켓을 지원하지 않으면 웹 소켓을 사용할 수없는 경우 긴 폴링 등을 사용하는 Socket.IO 및 Engine.IO와 달리 작동하지 않습니다. 그러나 "ws"는 현재 가장 빠른 라이브러리처럼 보입니다.
Socket.IO, Engine.IO 및 Primus를 비교하는 내 기사를 참조하십시오 : https://medium.com/p/b63bfca0539
npm ws가 저에게 답이었습니다. 나는 덜 관입적이고 더 직설적이라는 것을 알았습니다. 웹 소켓과 나머지 서비스를 혼합하는 것도 사소한 일이었습니다. 이 게시물에 간단한 코드를 공유했습니다.
var WebSocketServer = require("ws").Server;
var http = require("http");
var express = require("express");
var port = process.env.PORT || 5000;
var app = express();
app.use(express.static(__dirname+ "/../"));
app.get('/someGetRequest', function(req, res, next) {
console.log('receiving get request');
});
app.post('/somePostRequest', function(req, res, next) {
console.log('receiving post request');
});
app.listen(80); //port 80 need to run as root
console.log("app listening on %d ", 80);
var server = http.createServer(app);
server.listen(port);
console.log("http server listening on %d", port);
var userId;
var wss = new WebSocketServer({server: server});
wss.on("connection", function (ws) {
console.info("websocket connection open");
var timestamp = new Date().getTime();
userId = timestamp;
ws.send(JSON.stringify({msgType:"onOpenConnection", msg:{connectionId:timestamp}}));
ws.on("message", function (data, flags) {
console.log("websocket received a message");
var clientMsg = data;
ws.send(JSON.stringify({msg:{connectionId:userId}}));
});
ws.on("close", function () {
console.log("websocket connection close");
});
});
console.log("websocket server created");
참고 URL : https://stackoverflow.com/questions/16392260/which-websocket-library-to-use-with-node-js
'Programing' 카테고리의 다른 글
~ / .ssh / authorized_keys에 공개 키를 추가해도 자동으로 로그인되지 않습니다 (0) | 2020.02.20 |
---|---|
파이썬의 time.clock () 대 time.time () 정확도? (0) | 2020.02.20 |
파이썬에는 순서가 있습니까? (0) | 2020.02.20 |
URI에서 단어 구분 기호로 하이픈, 밑줄 또는 낙타 케이스? (0) | 2020.02.20 |
반복자를 스트림으로 변환하는 방법? (0) | 2020.02.20 |