1+ import { useEffect , useState } from "react" ;
12import { useParams } from "react-router-dom" ;
23
34import { Milkdown , MilkdownProvider } from "@milkdown/react" ;
@@ -6,6 +7,7 @@ import { ProsemirrorAdapterProvider } from "@prosemirror-adapter/react";
67
78import { WS_URL } from "@/api/constants" ;
89import useMilkdownCollab from "@/hooks/useMilkdownCollab" ;
10+ import { getRoomNumber } from "@/api/load-balancer" ;
911import useMilkdownEditor from "@/hooks/useMilkdownEditor" ;
1012
1113import { BlockView } from "./Block" ;
@@ -14,13 +16,28 @@ import "./Editor.css";
1416function MilkdownEditor ( ) {
1517 const { noteId } = useParams < Record < "noteId" , string > > ( ) ;
1618
19+ const [ roomNumber , setRoomNumber ] = useState < string > ( ) ;
20+
21+ useEffect ( ( ) => {
22+ const requestRoomNumber = async ( ) => {
23+ const response = await getRoomNumber ( "note" , noteId ) ;
24+ return response . server ;
25+ } ;
26+
27+ const initRoomNumber = async ( ) => {
28+ const roomNumber = await requestRoomNumber ( ) ;
29+ setRoomNumber ( roomNumber ) ;
30+ } ;
31+
32+ initRoomNumber ( ) ;
33+ } , [ noteId ] ) ;
1734 const { loading, get } = useMilkdownEditor ( {
1835 BlockView,
1936 } ) ;
2037
2138 useMilkdownCollab ( {
2239 editor : loading ? null : get ( ) || null ,
23- websocketUrl : `${ WS_URL } /note` ,
40+ websocketUrl : roomNumber ? `${ WS_URL } /${ roomNumber } / note` : null ,
2441 roomName : noteId || "" ,
2542 } ) ;
2643 return < Milkdown /> ;
0 commit comments