Post

Supabase Realtime 을 통한 채팅 구현 - 2

오늘은

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const handleSubmit = async (
  evt: FormEvent<HTMLFormElement>,
  text: string | undefined
) => {
  evt.preventDefault();
  const { data, error } = await supabase
    .from("Messages")
    .insert({
      channel_id: "214322ba-1cbd-424c-9ef1-e4b281f71675",
      user_id: "2e47ab8c-da7a-4590-b114-b0512b1b22cd",
      content: `${text}`
    })
    .select("*");

  if (error) {
    console.error("에러: ", error);
  }
};

const openTalkChannel = supabase
  .channel("openTalk") // realtime 이라는 명칭만 아니면 아무 문자열이나 가능함
  .on(
    "postgres_changes",
    {
      event: "*",
      schema: "public",
      table: "Messages"
    },
    (payload) => console.log(payload)
  )
  .subscribe();

처음엔 이렇게 작성해서, 어떤 일이 벌어지는 건지 파악하려고 했다.

payload 객체 확인

내가 입력한 데이터는 new 라는 프로퍼티에 입력이 되고 있었다.

전체 메시지 내역은 서버에서 가져온 뒤, INSERT 이벤트의 콜백 함수 내에서 payload.new 를 기존 메시지 내역에 추가해주면 여기에서 상태를 더 추가하지 않아도 될 것 같다!

일단 전체 코드 완성은 내일 해야겠다..

머리가 아프다..

This post is licensed under CC BY 4.0 by the author.