[]
@mescius/js-collaboration의 Server 클래스는 실시간 협업을 위한 서버 측 엔드포인트를 초기화합니다.
이 페이지에서는 Server 인스턴스를 생성하고 구성하는 방법을 설명합니다.
서버 패키지를 설치합니다.
npm install @mescius/js-collaboration가장 간단한 서버 시작 방법은 port를 지정하는 것입니다.
import { Server } from '@mescius/js-collaboration';
const server = new Server({ port: 8080 });
server.on('connect', (context) => {
// 클라이언트 연결 처리
});협업 서비스가 독립적으로 실행되는 경우 이 모드를 사용합니다.
애플리케이션에서 이미 Node.js 서버(예: Express)를 사용하고 있다면 협업 서버를 해당 서버에 연결할 수 있습니다.
지원되는 서버 유형:
http.Server
https.Server
http2.Http2Server
http2.Http2SecureServer
import express from "express";
import { createServer } from "http";
import { Server } from "@mescius/js-collaboration";
const app = express();
const httpServer = createServer(app);
const server = new Server({ httpServer });
app.use(express.static("public"));
server.on("connect", (context) => {
// 협업 로직
});
httpServer.listen(8080);다음과 같은 경우 이 모드를 사용합니다.
REST API와 동일한 서버를 공유하는 경우
기존 미들웨어를 사용하는 경우
통합 백엔드 서비스로 배포하는 경우
기본적으로 협업 엔드포인트는 다음 경로를 사용합니다.
/collaboration/
서버와 클라이언트 구성은 반드시 동일한
path를 사용해야 합니다.
서버
const server = new Server({
port: 8080,
path: "/my-custom-path/"
});클라이언트
import { Client } from "@mescius/js-collaboration-client";
const client = new Client("ws://server-domain.com:8000", {
path: "/my-custom-path/"
});Server 생성자는 port, httpServer, path 외에도 IServerConfig를 통해 다양한 고급 구성 옵션을 지원합니다.
이 옵션을 사용하면 다음 작업을 수행할 수 있습니다.
CORS(교차 출처 접근) 구성
핸드셰이크 또는 업그레이드 요청 검증
최대 페이로드 크기 제어
분산 배포 환경을 위한 Socket.IO 어댑터 사용자 지정
다음 예제는 여러 고급 옵션을 운영 환경과 유사한 구성으로 결합한 예시입니다. 환경에 맞게 값을 변경하여 사용하세요.
import { Server } from '@mescius/js-collaboration';
import { createClient } from 'redis';
import { createAdapter } from '@socket.io/redis-adapter';
const pubClient = createClient({ url: 'redis://localhost:6379' });
const subClient = pubClient.duplicate();
await Promise.all([pubClient.connect(), subClient.connect()]);
const server = new Server({
port: 8080,
// 사용자 지정 엔드포인트
path: "/collaboration/",
// 다중 노드 브로드캐스팅 활성화
socketIoAdapter: createAdapter(pubClient, subClient),
// CORS 구성
cors: {
origin: ["https://app.example.com"]
},
// 핸드셰이크 요청 제한
allowRequest: (req, callback) => {
const origin = req.headers.origin;
callback(null, !!origin);
},
// 페이로드 크기 제한
maxHttpBufferSize: 1024 * 1024 * 1024,
maxDecompressedMessageSize: 1024 * 1024 * 1024,
});다중 노드 환경(예: 로드 밸런서 뒤에서 실행되는 환경)에서는 인스턴스 간 메시지를 동기화하기 위해 사용자 지정 어댑터를 구성해야 합니다.
참고:
전체 구성 옵션은 다음 문서를 참조하세요.
서버를 초기화한 후에는 Server 클래스의 메서드를 사용하여 연결 및 메시지 처리를 위한 훅(hook)과 미들웨어를 등록할 수 있습니다. 자세한 내용은 Server 클래스 및 미들웨어를 참조하세요.