programing

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

easyjava 2023. 5. 29. 21:52
반응형

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

현재 node.js용 웹 소켓 라이브러리가 너무 많은데, 가장 인기 있는 것은 다음과 같습니다.

하지만 그들 사이에 확실한 비교는 찾을 수 없습니다.분명히 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

반응형