Skip to content

Commit b7b8a7d

Browse files
committed
feat: 노드 업데이트 구현
1 parent 1c44640 commit b7b8a7d

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

apps/backend/src/yjs/yjs.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { Module } from '@nestjs/common';
22
import { YjsService } from './yjs.service';
3+
import { NodeModule } from 'src/node/node.module';
34

45
@Module({
6+
imports: [NodeModule],
57
providers: [YjsService],
68
})
79
export class YjsModule {}

apps/backend/src/yjs/yjs.service.ts

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ import {
55
WebSocketGateway,
66
WebSocketServer,
77
} from '@nestjs/websockets';
8-
import { Logger } from '@nestjs/common';
8+
import { Injectable, Logger } from '@nestjs/common';
99
import { Server } from 'socket.io';
1010
import { YSocketIO } from 'y-socket.io/dist/server';
1111
import * as Y from 'yjs';
12+
import { NodeService } from '../node/node.service';
1213

1314
@WebSocketGateway(1234)
1415
export class YjsService
@@ -17,6 +18,7 @@ export class YjsService
1718
private logger = new Logger('YjsGateway');
1819
private ysocketio: YSocketIO;
1920

21+
constructor(private readonly nodeService: NodeService) {}
2022
@WebSocketServer()
2123
server: Server;
2224

@@ -32,13 +34,31 @@ export class YjsService
3234

3335
this.ysocketio.initialize();
3436

35-
this.ysocketio.on('document-loaded', (doc: Y.Doc) => {
36-
this.logger.log(`Document loaded: ${doc.guid}`);
37+
this.ysocketio.on('document-update', (doc: Y.Doc) => {
38+
// console.log(doc.get("content").doc.share.get("content"));
39+
// console.log(doc.share.get('default'));
40+
});
3741

38-
const titleMap = doc.getMap('title');
39-
titleMap.observe(() => {
40-
console.log(titleMap.toString());
42+
this.ysocketio.on('document-loaded', (doc: Y.Doc) => {
43+
doc.on('update', (update) => {
44+
// console.log(Y.decodeUpdate(update).structs);
45+
// console.log(doc.share.get('default'));
46+
const nodes = Object.values(doc.getMap('nodes').toJSON());
47+
console.log(nodes);
48+
nodes.forEach((node) => {
49+
const { title, id } = node.data;
50+
const { x, y } = node.position;
51+
console.log(title, id, x, y);
52+
this.nodeService.updateNode(id, { title, x, y });
53+
});
4154
});
55+
this.logger.log(`Document loaded: ${doc.guid}`);
56+
setTimeout(() => {
57+
const titleMap = doc.getMap('title');
58+
titleMap.observe(() => {
59+
console.log(titleMap.toString());
60+
});
61+
}, 5000);
4262
// const toggleMap = doc.getMap('toggleMap');
4363
// toggleMap.observe(() => {
4464
// const toggleState = toggleMap.get('toggle') || false;

0 commit comments

Comments
 (0)