Programing

Node.js와 함께 사용할 웹 소켓 라이브러리는 무엇입니까?

lottogame 2020. 2. 20. 23:11
반응형

Node.js와 함께 사용할 웹 소켓 라이브러리는 무엇입니까? [닫은]


현재 node.js에 대한 수많은 웹 소켓 라이브러리 가 있으며 가장 인기있는 것으로 보입니다.

그러나 나는 그들 사이의 확실한 비교를 찾을 수 없습니다 ... 분명히 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



반응형