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와 웹 소켓 노드 모두 가장 빠르다고 주장합니다.그리고 engine.io 은 새로운 것처럼 보이지만, 가벼운 학습용 로봇보다 훨씬 더 무겁습니다.
우리나 누군가가 어떤 소켓 라이브러리를 언제 사용할지, 그리고 그들 사이의 비교에 대한 가이드 역할을 하는 답변을 함께 작성할 수 있다면 정말 멋질 것입니다.
이 커뮤니티 위키 답변으로 공을 굴리고 있습니다.당신의 개선 사항에 대해 언제든지 저를 편집해주세요.
node.js에 대한 ws WebSocket 서버 및 클라이언트.가장 빠른 라이브러리는 아니지만 가장 빠른 라이브러리 중 하나입니다.
node.js용 웹 소켓 노드 WebSocket 서버 및 클라이언트
웹소켓 드라이버 노드 웹소켓 서버 및 클라이언트 프로토콜 파서 노드.js - 파이-웹소켓 노드에 사용
node.js용 faye-websocket-node WebSocket 서버 및 클라이언트 - faye 및 sockjs에 사용
node.js용 socket.io WebSocket 서버 및 클라이언트 + 브라우저용 클라이언트 + (v0에는 최신 버전의 폴백이 있으며, Socket.io 의 v1에는 engine.io 사용) + 채널 - stack.io 에서 사용됩니다.연결이 끊어지면 클라이언트 라이브러리가 다시 연결을 시도합니다.
sockjs node.js 및 기타용 WebSocket 서버 및 클라이언트 + 브라우저용 클라이언트 + 최신 또는 오래된 폴백
node.js 및 기타를 위한 faye WebSocket 서버 및 클라이언트 + 브라우저를 위한 클라이언트 + 폴백 + 기타 서버 측 언어 지원
WebSockets & TCP 연결을 처리하고 데이터 동기화, pub/sub 및 요청/응답을 제공하는 deepstream.io 클러스터화 가능한 실시간 서버
시스템의 모든 CPU 코어를 사용하는 소켓 클러스터 WebSocket 서버 클러스터입니다.예를 들어 32개의 코어가 있는 대규모 Amazon EC2 인스턴스를 사용할 경우 단일 인스턴스에서 거의 32배의 트래픽을 처리할 수 있습니다.
primus 위의 대부분의 라이브러리에 공통 API를 제공하여 모든 라이브러리에 대한 쉬운 전환 + 안정성 향상을 제공합니다.
사용 시기:
클라이언트 측에서 기본 WebSocket 서버를 사용하려면 기본 WebSocket 서버를 사용합니다. 브라우저 비호환성에 주의하십시오.
브라우저 폴백에 관심이 있을 때 폴백 라이브러리 사용
채널을 신경 쓸 때는 모든 기능을 갖춘 라이브러리를 사용합니다.
무엇을 사용해야 할지 잘 모르거나 프로젝트 요구사항 변경으로 인해 프레임워크를 전환해야 하거나 추가적인 연결 안정성이 필요할 때 응용프로그램을 다시 쓸 기분이 아닐 때 primus를 사용합니다.
테스트할 위치:
Firecamp는 소켓용 GUI 테스트 환경입니다.IO, WS 및 모든 주요 실시간 기술.개발하는 동안 실시간 이벤트를 디버깅합니다.
업데이트: 이후 언급된 라이브러리의 최신 버전이 출시됨에 따라 이 답변은 구식입니다.
Socket.IO v0.9는 구식이고 약간 버그가 있으며 Engine.IO는 임시 계승자입니다.소켓.IO v1.0(곧 출시 예정)은 엔진을 사용합니다.IO 및 v0.9보다 훨씬 우수합니다.엔진을 사용하는 것이 좋습니다.소켓까지 IO.IO v1.0이 릴리스되었습니다.
"ws"는 폴백을 지원하지 않으므로 클라이언트 브라우저가 웹 소켓을 지원하지 않으면 소켓과 달리 작동하지 않습니다.IO 및 엔진.웹 소켓을 사용할 수 없는 경우 긴 폴링 등을 사용하는 IO입니다.하지만 "ws"는 현재 가장 빠른 라이브러리처럼 보입니다.
소켓을 비교하는 제 기사를 참조하십시오.IO, 엔진.IO 및 Primus: https://medium.com/p/b63bfca0539
npmws는 저에게 답이었습니다.저는 그것이 덜 거슬리고 더 솔직하다는 것을 알았습니다.웹 소켓과 휴식 서비스를 혼합하는 것도 사소한 일이었습니다.이 게시물에 공유된 단순 코드.
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' 카테고리의 다른 글
| 번들에서 NIB를 로드할 수 없습니다. (0) | 2023.05.29 |
|---|---|
| SQL Server의 테이블에서 Xml 값 및 속성을 쿼리하는 방법은 무엇입니까? (0) | 2023.05.29 |
| 각도 2 - 내부HTML 스타일 (0) | 2023.05.29 |
| RabbitMQ / AMQP: 동일한 메시지에 대해 단일 대기열, 다중 소비자? (0) | 2023.05.29 |
| 현재 사용 중인 대화형 셸을 확인하는 방법(명령줄) (0) | 2023.05.29 |