1- import { createMom , getMom } from '@apis/mom/service' ;
1+ import { createMom , getMom , putMom } from '@apis/mom/service' ;
22import { Server } from 'socket.io' ;
33import CRDT from '@wabinar/crdt' ;
44
5- const crdt = new CRDT ( 1 , - 100 ) ;
5+ async function momSocketServer ( io : Server ) {
6+ const momId = '6380c9f7b757041ca21fe96c' ;
7+
8+ const { structure } = await getMom ( momId ) ;
9+
10+ const crdt = new CRDT ( 1 , - 1 , structure ) ;
611
7- function momSocketServer ( io : Server ) {
812 const workspace = io . of ( / ^ \/ a p i \/ s c - w o r k s p a c e \/ \d + $ / ) ;
913
10- workspace . on ( 'connection' , ( socket ) => {
14+ workspace . on ( 'connection' , async ( socket ) => {
1115 const name = socket . nsp . name ;
1216 const workspaceId = name . match ( / \d + / g) [ 0 ] ;
1317
@@ -16,9 +20,6 @@ function momSocketServer(io: Server) {
1620 return ;
1721 }
1822
19- // 초기화에 필요한 정보 전달
20- socket . emit ( 'mom-initialization' , crdt ) ;
21-
2223 /* 회의록 선택 시 회의록 정보 불러오기 */
2324 socket . on ( 'select-mom' , async ( roomId ) => {
2425 socket . join ( roomId ) ;
@@ -37,11 +38,15 @@ function momSocketServer(io: Server) {
3738 socket . on ( 'mom-insertion' , async ( op ) => {
3839 socket . broadcast . emit ( 'mom-insertion' , op ) ;
3940 crdt . remoteInsert ( op ) ;
41+
42+ putMom ( momId , crdt . data ) ;
4043 } ) ;
4144
4245 socket . on ( 'mom-deletion' , async ( op ) => {
4346 socket . broadcast . emit ( 'mom-deletion' , op ) ;
4447 crdt . remoteDelete ( op ) ;
48+
49+ putMom ( momId , crdt . data ) ;
4550 } ) ;
4651
4752 // 에러 시
@@ -53,6 +58,11 @@ function momSocketServer(io: Server) {
5358 socket . on ( 'disconnect' , ( ) => {
5459 console . log ( 'user disconnected' , socket . id ) ;
5560 } ) ;
61+
62+ // 초기화에 필요한 정보 전달
63+ const { structure } = await getMom ( momId ) ;
64+
65+ socket . emit ( 'mom-initialization' , structure ) ;
5666 } ) ;
5767}
5868
0 commit comments