
์ธ์ด ๐ฐ๐ท ํ๊ตญ์ด
์์ํ๊ธฐ
๊ตฌ์ฑ
๋ง์ถคํ
๊ณ ๊ธ
๋ฌธ์, ์ฑ ๋ฑ์์ ์ธ๋ผ์ธ ์ค์๊ฐ ๋๊ธ ์ถ๊ฐํ๊ธฐ
FastComments Collab Chat์ ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์ ๋ชจ๋ ํ ์คํธ ์ฝํ ์ธ ๋ฅผ ๊ฐ์กฐํ๊ณ ์ฃผ์์ ๋ฌ ์ ์๊ฒ ํด, ํน์ ํ ์คํธ ์ ํ์ ์ฐ๊ฒฐ๋ ์ค๋ ๋ํ ํ ๋ก ์ ์์ฑํฉ๋๋ค. ์ฌ์ฉ์๋ ๋จ์ด, ๋ฌธ์ฅ ๋๋ ์ ์ฒด ๋จ๋ฝ์ ์ ํํ์ฌ ์ฝํ ์ธ ๋ด์์ ์ง์ ํ์ ๋ํ๋ฅผ ์์ํ ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ํธ์ง ํผ๋๋ฐฑ, ํ์ ์ฝ๊ธฐ ํ๊ฒฝ, ๊ต์ก ํ๋ซํผ, ๋ฌธ์ ๊ฒํ ๋ฐ ํน์ ํ ์คํธ์ ๊ณ ์ ๋ ๋งฅ๋ฝ์ ํ ๋ก ์ด ํ์ํ ๋ชจ๋ ์ํฉ์ ์ ํฉํฉ๋๋ค.
Note that these docs are specific to the Collab Chat functionality. You can add commenting for content with lots of pages, like Books, with thread-per-page, without using collab chat. FastComments also does not charge per-page or per-thread. Collab Chat is specifically when you want to allow users to select text and comment on the highlighted section of text.
You can see an example here.
์์ํ๊ธฐ 
๋น ๋ฅธ ์์
Collab Chat์ ์์ํ๋ ๊ฒ์ ๊ฐ๋จํฉ๋๋ค. FastComments Collab Chat ์คํฌ๋ฆฝํธ, ์ฃผ์์ ๋ฌ๊ณ ์ ํ๋ ํ ์คํธ๋ฅผ ํฌํจํ HTML ์์, ๊ทธ๋ฆฌ๊ณ Tenant ID๊ฐ ํฌํจ๋ ๊ตฌ์ฑ ๊ฐ์ฒด๊ฐ ํ์ํฉ๋๋ค.
์ค์น
ํ์ด์ง์ Collab Chat ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ์ธ์:

๊ธฐ๋ณธ ๊ตฌํ
๊ฐ๋จํ ์์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
Run 
์ค์ FastComments Tenant ID๋ก 'demo'๋ฅผ ๋ฐ๊พธ์ธ์(์ด๋ฏธ ์ค์ ๋์ด ์์ง ์์ ๊ฒฝ์ฐ). Tenant ID๋ FastComments ๋์๋ณด๋์์ ์ฐพ์ ์ ์์ต๋๋ค.
์๋ ๋ฐฉ์
์ด๊ธฐํ๋๋ฉด ์ฌ์ฉ์๋ ๋์ ์์ ๋ด์ ์์์ ํ ์คํธ๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ์งง์ ์ง์ฐ ํ(๋ฐ์คํฌํ์์๋ 3.5์ด), ํ ๋ก ์ ์์ํ ์ ์๋ ํ๋กฌํํธ๊ฐ ๋ํ๋ฉ๋๋ค. ํ ๋ก ์ด ์์ฑ๋๋ฉด ํ ์คํธ์ ์๊ฐ์ ํ์ด๋ผ์ดํธ๊ฐ ํ์๋ฉ๋๋ค. ๋ค๋ฅธ ์ฌ์ฉ์๋ ํ์ด๋ผ์ดํธ์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆฌ๊ฑฐ๋ ํด๋ฆญํ์ฌ ํ ๋ก ์ ๋ณด๊ณ ์ฐธ์ฌํ ์ ์์ต๋๋ค. ๋ชจ๋ ํ ๋ก ์ ๋ชจ๋ ๋ฐฉ๋ฌธ์์๊ฒ ์ค์๊ฐ์ผ๋ก ๋๊ธฐํ๋ฉ๋๋ค.
๋ผ์ด๋ธ ๋ฐ๋ชจ
Collab Chat์ ๋์์ ๋ผ์ด๋ธ ๋ฐ๋ชจ ํ์ด์ง์์ ํ์ธํ ์ ์์ต๋๋ค.
๋ค์ ๋จ๊ณ
๊ธฐ๋ณธ ๊ธฐ๋ฅ์ด ์๋ํ๋ฉด ๊ตฌ์ฑ ์ต์ ๊ฐ์ด๋์์ ์ธ๊ด๊ณผ ๋์์ ์ฌ์ฉ์ํํ ์ ์์ต๋๋ค. ํ ์คํธ ์ ํ ๋์ ๊ฐ์ด๋๋ฅผ ํ์ธํ์ฌ ํ ์คํธ ์ ํ ๋ฐฉ์์ ๋ํด ์ดํดํ์ธ์. ์ปค์คํฐ๋ง์ด์ ์ด์ ๊ฐ์ด๋์์ ์คํ์ผ๋ง ๋ฐ ๋คํฌ ๋ชจ๋ ์ง์์ ๋ํด ์์๋ณด์ธ์. ๊ณ ๊ธ ํตํฉ์ ๊ฒฝ์ฐ API ๋ ํผ๋ฐ์ค๋ฅผ ์ดํด๋ณด์ธ์.
ํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ชจ๋ FastComments ํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(react, vue, angular ๋ฑ)๋ Collab Chat์ ํฌํจํ๊ณ ์์ต๋๋ค.
์์ 
๊ธฐ๋ณธ ์์
Collab Chat์ ์ฌ์ฉํ๋ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋จ์ผ ์ฝํ ์ธ ์ปจํ ์ด๋๋ฅผ ๋์์ผ๋ก ํ๋ ๊ฒ์ ๋๋ค. ์ด ์์ ๋ ๊ธฐ์ฌ์ ํ ์คํธ ์ฃผ์ ๊ธฐ๋ฅ์ ํ์ฑํํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค:
Run 
๋ง์ถค URL ID ์์ (์ฑ ํ์ด์ง, ๊ธฐ์ฌ ๋ฑ)
๊ธฐ๋ณธ์ ์ผ๋ก Collab Chat์ ํ์ด์ง URL๊ณผ ์์ ๊ฒฝ๋ก ๋ฐ ํ
์คํธ ๋ฒ์๋ฅผ ๊ฒฐํฉํ์ฌ ๋ํ๋ฅผ ์๋ณํฉ๋๋ค. ๋ํ ๊ทธ๋ฃนํ ๋ฐฉ๋ฒ์ ๋ณด๋ค ์ธ๋ฐํ๊ฒ ์ ์ดํ๋ ค๋ฉด ๋ง์ถค urlId๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค:

URL ๊ตฌ์กฐ๊ฐ ๋ณ๊ฒฝ๋๋๋ผ๋ ๋์ผํ ๋ํ๋ฅผ ์ ์งํ๋ ค๋ ๊ฒฝ์ฐ๋ ์ฌ๋ฌ ํ์ด์ง์ ๋์ผํ ๋ํ ์ฃผ์์ ๊ณต์ ํ๋ ค๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
๋คํฌ ๋ชจ๋ ์์
์ฌ์ดํธ ๋ฐฐ๊ฒฝ์ด ์ด๋์ด ๊ฒฝ์ฐ ๋คํฌ ๋ชจ๋ ์ง์์ ํ์ฑํํ์ฌ ์ฑํ UI๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ํ์๋๋๋ก ํ์ธ์:
Run 
์๋จ ๋ฐ ๋นํ์ฑํ ์์
๊ธฐ๋ณธ์ ์ผ๋ก Collab Chat์ ์ฌ์ฉ์ ์ ๋ฐ ํ ๋ก ์๊ฐ ํ์๋ ์๋จ ๋ฐ๋ฅผ ํ์ํฉ๋๋ค. ์ด๋ฅผ ๋นํ์ฑํํ ์ ์์ต๋๋ค:
Run 
๋๊ธ ์ ์ฝ๋ฐฑ ์์
commentCountUpdated ์ฝ๋ฐฑ์ ์ฌ์ฉํ์ฌ ๋๊ธ์ด ์ถ๊ฐ๋๊ฑฐ๋ ์
๋ฐ์ดํธ๋ ๋๋ฅผ ์ถ์ ํ ์ ์์ต๋๋ค:

์ฌ๋ฌ ์น์ ์์
ํ์ด์ง์ ์ฌ๋ฌ ๊ฐ๋ณ ์น์ ์์ Collab Chat์ ์ด๊ธฐํํ ์ ์์ต๋๋ค. ๊ฐ ์น์ ์ ์์ฒด์ ์ธ ๋ ๋ฆฝ๋ ์ฃผ์์ ๊ฐ์ง๋๋ค:

์จ๋ผ์ธ ๋์์ ์ค์๊ฐ ๋๊ธ ์ถ๊ฐ 
์ํ๋ฉด ํ์ด์ง๋ณ๋ก Collab Chat์ ์ด๊ธฐํํ๊ณ ํ์ด์ง๋ณ๋ก ๋ณ๋์ ์ค๋ ๋๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ๊ฐ๋จํ urlId ๋งค๊ฐ๋ณ์
์ book-one-page1๊ณผ ๊ฐ์ ๊ฐ์ ์ ๋ฌํ์ธ์. ์ด ๊ตฌ์ฑ์ ์ผ๋ฐ ๋๊ธ ์์ ฏ์์๋ ์๋ํฉ๋๋ค.
๊ตฌ์ฑ ์ต์

๊ฐ์
FastComments Collab Chat์ ํ์ค FastComments ๋๊ธ ์์ ฏ์ ํ์ฅํ์ฌ ๊ธฐ๋ณธ ์์ ฏ์ ๋ชจ๋ ๊ตฌ์ฑ ์ต์ ์ ์์ํ๋ฉด์ ํ ์คํธ ์ฃผ์์ ํนํ๋ ๋ช ๊ฐ์ง ์ต์ ์ ์ถ๊ฐํฉ๋๋ค.
ํ์ ๊ตฌ์ฑ
tenantId
FastComments Tenant ID๊ฐ ํ์ํฉ๋๋ค. ์ด ๊ฐ์ FastComments ๋์๋ณด๋์์ ์ฐพ์ ์ ์์ต๋๋ค.

Collab Chat ํน์ ์ต์
urlId
๊ธฐ๋ณธ์ ์ผ๋ก Collab Chat์ ํ์ด์ง URL, ์์์ DOM ๊ฒฝ๋ก, ์ ํ๋ ํ
์คํธ ๋ฒ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ ๋ํ์ ๋ํ ๊ณ ์ ์๋ณ์๋ฅผ ์์ฑํฉ๋๋ค. ์ด ๊ฐ์ ์ฌ์ฉ์ ์ง์ urlId๋ก ์ฌ์ ์ํ ์ ์์ต๋๋ค.

์ด๋ URL ๊ตฌ์กฐ๊ฐ ๋ณ๊ฒฝ๋ ์ ์์ง๋ง ๋์ผํ ๋ํ๋ฅผ ์ ์งํ๋ ค๋ ๊ฒฝ์ฐ๋ ์ฌ๋ฌ ํ์ด์ง์ ๊ฑธ์ณ ์ฃผ์์ ๊ณต์ ํ๋ ค๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
topBarTarget
์ฌ์ฉ์ ์์ ํ ๋ก ์๋ฅผ ํ์ํ๋ ์๋จ ๋ฐ์ ํ์๋ฅผ ์ ์ดํฉ๋๋ค. ์๋จ ๋ฐ๋ฅผ ์์ ํ ๋นํ์ฑํํ๋ ค๋ฉด null๋ก ์ค์ ํ๊ฑฐ๋, ํน์ ์์น์ ๋ ๋๋งํ๋ ค๋ฉด DOM ์์๋ฅผ ์ ๊ณตํ์ญ์์ค.

hasDarkBackground
ํ์ด์ง์ ์ด๋์ด ๋ฐฐ๊ฒฝ์ด ์์ ๋ ๋คํฌ ๋ชจ๋ ์คํ์ผ์ ํ์ฑํํฉ๋๋ค. ์ด ๊ฐ์ง๋ ์๋์ผ๋ก ์ด๋ฃจ์ด์ง์ง๋ง ์๋์ผ๋ก ๋ฎ์ด์ฐ๋ ๊ฒ์ด ๋ฐ๋์งํ ์ ์์ต๋๋ค.

commentCountUpdated
๋๊ธ ์๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ํธ์ถ๋๋ ์ฝ๋ฐฑ ํจ์์ ๋๋ค. ๋ฐฐ์ง๋ ํ์ด์ง ์ ๋ชฉ๊ณผ ๊ฐ์ UI ์์๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.

์์๋ ๊ตฌ์ฑ ์ต์
Collab Chat์ ํ์ค ๋๊ธ ์์ ฏ์ ํ์ฅํ๋ฏ๋ก, ๊ธฐ๋ณธ FastComments ์์ ฏ์ ๋ชจ๋ ๊ตฌ์ฑ ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ต์ ๋ค์ ๋๋ค:
locale
์์ ฏ UI์ ์ธ์ด๋ฅผ ์ค์ ํฉ๋๋ค. FastComments๋ ์์ญ ๊ฐ์ ์ธ์ด๋ฅผ ์ง์ํฉ๋๋ค.

readonly
๋ชจ๋ ๋ํ๋ฅผ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ง๋ญ๋๋ค. ์ฌ์ฉ์๋ ๊ธฐ์กด ์ฃผ์์ ๋ณผ ์๋ ์์ง๋ง ์๋ก ๋ง๋ค๊ฑฐ๋ ๋ต๊ธ์ ๋ฌ ์๋ ์์ต๋๋ค.

sso and simpleSSO
์ฑ๊ธ ์ฌ์ธ์จ์ ์ฌ์ฉํ์ฌ ์ธ์ฆ ์์คํ ๊ณผ ํตํฉํฉ๋๋ค.

์ธ์ฆ ์ต์ ์ ๋ํ ์ ์ฒด ์ธ๋ถ์ฌํญ์ SSO ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
maxReplyDepth
๋ต๊ธ์ ์ค์ฒฉ ์์ค์ ์ ์ดํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Collab Chat์ ์ด๋ฅผ 0์ผ๋ก ์ค์ ํ์ฌ ๋ชจ๋ ๋๊ธ์ด ํ๋ซ(์ค์ฒฉ ๋ต๊ธ ์์)ํฉ๋๋ค. ์ค๋ ๋ ๋ํ๋ฅผ ์ํ๋ฉด ์ด ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.

๋ด๋ถ ๊ตฌ์ฑ
์ด ์ต์ ๋ค์ Collab Chat์ ์ํด ์๋์ผ๋ก ์ค์ ๋๋ฉฐ ์ฌ์ ์ํด์๋ ์ ๋ฉ๋๋ค:
The productId is automatically set to 3 for Collab Chat. The floating-chat extension is automatically loaded to provide the chat window functionality. The widget automatically detects mobile devices (screens under 768px wide) and adjusts the UI accordingly.
์ ์ฒด ์์
๋ค์์ ์ฌ๋ฌ ๊ตฌ์ฑ ์ต์ ์ ํจ๊ป ๋ณด์ฌ์ฃผ๋ ์์ ์ ๋๋ค:

๊ธฐ๋ณธ ์์ ฏ์์ ์์๋๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ตฌ์ฑ ์ต์ ์ ์ ์ฒด ๋ชฉ๋ก์ ๋ฉ์ธ FastComments ๊ตฌ์ฑ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ
์คํธ ์ ํ ๋์ 
How Text Selection Works
์ฌ์ฉ์๊ฐ Collab Chat ์ปจํ ์ด๋ ๋ด์์ ํ ์คํธ๋ฅผ ์ ํํ๋ฉด, ์์ ฏ์ ๊ทธ ์ ํ์ ์บก์ฒํ์ฌ ํ ๋ก ์ ์์ํ ์ ์๊ฒ ํฉ๋๋ค. ์ ํ์ ํ ๋จ์ด๋งํผ ์์ ์๋ ์๊ณ ์๋ก ๋ค๋ฅธ ์์์ ๊ฑธ์น ์ฌ๋ฌ ๋จ๋ฝ๋งํผ ํด ์๋ ์์ต๋๋ค.
Selection Delay
๋ฐ์คํฌํฑ ์ฅ์น์์๋ ์ฌ์ฉ์๊ฐ ํ ์คํธ๋ฅผ ์ ํํ ์์ ๊ณผ ํ ๋ก ํ๋กฌํํธ๊ฐ ๋ํ๋๋ ์์ ์ฌ์ด์ 3.5์ด์ ์ง์ฐ์ด ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ๋จ์ํ ํ ์คํธ๋ฅผ ๋ณต์ฌํ๊ฑฐ๋ ์ฝ๊ธฐ ์ํด ๊ฐ์กฐ ํ์ํ ๋ UI๊ฐ ๊น๋นก์ด๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์๋ ํฐ์น ์คํฌ๋ฆฐ์์์ ํ ์คํธ ์ ํ์ด ๋ ์๋์ ์ด๋ฏ๋ก ํ๋กฌํํธ๊ฐ ์ฆ์ ๋ํ๋ฉ๋๋ค.
Unique Conversation IDs
๊ฐ ๋ํ๋ ํ์ด์ง URL, DOM ์์ ๊ฒฝ๋ก ๋ฐ ์ง๋ ฌํ๋ ํ
์คํธ ๋ฒ์๋ฅผ ๊ฒฐํฉํ ๊ณ ์ ํ urlId๋ฅผ ๋ถ์ฌ๋ฐ์ต๋๋ค. ์ด๋ ๊ฐ ํ
์คํธ ์ ํ์ด ๋์ค์ ๋ค์ ์ฐพ์ ์ ์๋ ๋ณ๋์ ๋ํ๋ฅผ ์์ฑํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
๊ตฌ์ฑ์์ ์ฌ์ฉ์ ์ง์ urlId๋ฅผ ์ ๊ณตํ๋ฉด, ์ต์ข
์๋ณ์๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์์ ๊ฒฝ๋ก ๋ฐ ํ
์คํธ ๋ฒ์์ ๊ฒฐํฉ๋ฉ๋๋ค.
Visual Highlights
ํน์ ํ ์คํธ ์ ํ์ ๋ํ ํ ๋ก ์ด ์กด์ฌํ๋ฉด ํด๋น ํ ์คํธ์ ์๊ฐ์ ํ์ด๋ผ์ดํธ๊ฐ ์ ์ฉ๋ฉ๋๋ค. ํ์ด๋ผ์ดํธ๋ ๋ฐฐ๊ฒฝ์์ ์ฌ์ฉํ์ฌ ๊ตฌํ๋๋ฉฐ, ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆฌ๊ฑฐ๋ ์ฐ๊ฒฐ๋ ์ฑํ ์ฐฝ์ด ์ด๋ ค ์์ ๋ ๋ํ๋ฉ๋๋ค.
ํ์ด๋ผ์ดํธ ์์คํ ์ ์ ํ๋ ํ ์คํธ๋ฅผ ์คํ์ผ์ ์ ์ฉํ ์ ์๋ ํน์ ์์๋ก ๋ํํ์ฌ ์๋ํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๊ธฐ๋ณธ HTML ๊ตฌ์กฐ๊ฐ ๋ณต์กํ๋๋ผ๋ ํ์ด๋ผ์ดํธ๊ฐ ์ ํํ๊ฒ ์ ์ง๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
Chat Window Positioning
์ฌ์ฉ์๊ฐ ํ์ด๋ผ์ดํธ๋ฅผ ํด๋ฆญํ๊ฑฐ๋ ์ ์ฃผ์์ ์์ฑํ๋ฉด ์ ํ๋ ํ ์คํธ ๊ทผ์ฒ์ ์ฑํ ์ฐฝ์ด ๋ํ๋ฉ๋๋ค. ์์ ฏ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ทฐํฌํธ ๊ณต๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ด ์ฐฝ์ ์ต์ ์์น๋ฅผ ์๋์ผ๋ก ๊ณ์ฐํฉ๋๋ค.
์์น ์ง์ ์์คํ
์ ์ฑํ
์ฐฝ์ด ํ์ด๋ผ์ดํธ์์ ์ด๋ ๋ฐฉํฅ์ผ๋ก ํ์ฅ๋์ด์ผ ํ๋์ง๋ฅผ ๋ํ๋ด๊ธฐ ์ํด to-right, to-left, to-top, to-bottom๊ณผ ๊ฐ์ CSS ํด๋์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ(๋๋น๊ฐ 768px ๋ฏธ๋ง์ธ ํ๋ฉด)์์๋ ๋ ๋์ ์ฌ์ฉ์ฑ์ ์ํด ์ฑํ
์ฐฝ์ด ํญ์ ์ ์ฒด ํ๋ฉด์ผ๋ก ํ์๋ฉ๋๋ค.
Chat Window Dimensions
๋ฐ์คํฌํฑ์์๋ ์ฑํ ์ฐฝ์ ๋๋น๊ฐ 410px์ด๊ณ 20px ๊ฐ๊ฒฉ๊ณผ ํ์ด๋ผ์ดํธ๋ ํ ์คํธ๋ฅผ ๊ฐ๋ฆฌํค๋ 16px ํฌ๊ธฐ์ ์๊ฐ์ ํ์ดํ๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ์น์๋ ์ผ๊ด๋ ๋์์ ๋ณด์ฅํ๊ธฐ ์ํด ๊ณ ์ ๋์ด ์์ง๋ง CSS๋ก ์ธํ์ ์ฌ์ฉ์ํํ ์ ์์ต๋๋ค.
Cross-Element Selections
์ฌ์ฉ์๋ ํ๋์ ๋จ๋ฝ ์ค๊ฐ์์ ๋ค๋ฅธ ๋จ๋ฝ์ ์์๊น์ง ํ์ด๋ผ์ดํธํ๋ ๋ฑ ์ฌ๋ฌ HTML ์์์ ๊ฑธ์ณ ํ ์คํธ๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ๋ฒ์ ์ง๋ ฌํ ์์คํ ์ ์ด๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ๋ฉฐ ์์ ๊ฒฝ๊ณ๋ฅผ ๋๋ ๋ชจ๋ ์ ํ๋ ํ ์คํธ๋ฅผ ํ์ด๋ผ์ดํธํฉ๋๋ค.
Browser Compatibility
ํ
์คํธ ์ ํ ์์คํ
์ ๋ชจ๋ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋๋ ํ์ค window.getSelection() API๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ตฌํ Internet Explorer ๋ฒ์ ์์๋ ํธํ์ฑ์ ์ํด document.selection์ผ๋ก ํด๋ฐฑ๋ฉ๋๋ค.
Selection Persistence
ํ ์คํธ ์ ํ์ ๋ํ ๋ํ๊ฐ ์์ฑ๋๋ฉด ํด๋น ์ฃผ์์ ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํด๋ ์ง์๋ฉ๋๋ค. ์ง๋ ฌํ๋ ๋ฒ์์ DOM ๊ฒฝ๋ก๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ๋ค์ ๋ฐฉ๋ฌธํ์ ๋ ์์ ฏ์ด ์ ํํ ๋์ผํ ์์น์ ํ์ด๋ผ์ดํธ๋ฅผ ๋ณต์ํ ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ํ์ด์ง ์ฝํ ์ธ ๊ฐ ์์ ์ ์ผ๋ก ์ ์ง๋๋ ํ ์ ๋ขฐํ ์ ์์ต๋๋ค. ํ ์คํธ ๋ด์ฉ์ ๋ณ๊ฒฝํ๊ฑฐ๋ HTML์ ์ฌ๊ตฌ์ฑํ๋ฉด ๊ธฐ์กด ์ฃผ์์ด ๋ ์ด์ ํ ์คํธ์ ์ ํํ ์ผ์นํ์ง ์์ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ด์ ๋ก ํ์ฑ ์ฃผ์์ด ์๋ ํ์ด์ง์์๋ ๋๊ท๋ชจ ์ฝํ ์ธ ๋ณ๊ฒฝ์ ํผํ๊ฑฐ๋, ์ฝํ ์ธ ๋ณ๊ฒฝ์ด ๋ถ๊ฐํผํ ๊ฒฝ์ฐ ์ฃผ์์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐฉ์์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ง์ถคํ 
๋คํฌ ๋ชจ๋ ์ง์
๋์ ๋คํฌ ๋ชจ๋
์ฌ์ดํธ์ ๋คํฌ ๋ชจ๋๊ฐ body ์์์ .dark ํด๋์ค๋ฅผ ์ถ๊ฐํ์ฌ ์ ์ด๋๋ ๊ฒฝ์ฐ, Collab Chat UI๋ ์ฌ์ด๊ธฐํ ์์ด ์๋์ผ๋ก ์ด๋ฅผ ๋ฐ์ํฉ๋๋ค. ์์ ฏ์ ์คํ์ผ์ ์ด ํด๋์ค์ ์กด์ฌ์ ๋ฐ์ํ๋๋ก ์ค๊ณ๋์ด ์์ต๋๋ค.

CSS๋ก ์ฌ์ฉ์ ์ง์ ์คํ์ผ
ํ์ด๋ผ์ดํธ, ์ฑํ ์ฐฝ ๋ฐ ๊ธฐํ ์์์ ์ธํ์ CSS๋ก ์ฌ์ฉ์ ์ง์ ํ ์ ์์ต๋๋ค. ์์ ฏ์ ์คํ์ผ์ํธ์์ ํ๊ฒํ ํ ์ ์๋ ํน์ ํด๋์ค๋ฅผ ์ถ๊ฐํฉ๋๋ค.
ํ ์คํธ ํ์ด๋ผ์ดํธ๋ FastComments์ ๋๊ธ ๋ฒ๋ธ ์คํ์ผ๋ง ์์คํ ์ ์ฌ์ฉํ๋ฏ๋ก, ํ์ค ๋๊ธ ์์ ฏ์ ์ ์ฉํ ๋ชจ๋ ์ฌ์ฉ์ ์ ์๋ Collab Chat์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์๋จ ๋ฐ ์ฌ์ฉ์ ์ง์
์๋จ ๋ฐ์๋ ์จ๋ผ์ธ ์ฌ์ฉ์ ์์ ํ ๋ก ์๊ฐ ํ์๋ฉ๋๋ค. topBarTarget์ผ๋ก ์ปค์คํ
์์๋ฅผ ์ ๊ณตํ์ฌ ์์น๋ฅผ ์ฌ์ฉ์ ์ง์ ํ ์ ์์ต๋๋ค:

๋๋ null๋ก ์ค์ ํ์ฌ ์์ ํ ๋นํ์ฑํํ ์ ์์ต๋๋ค:

๋ชจ๋ฐ์ผ ๋์
ํ๋ฉด ๋๋น๊ฐ 768px ๋ฏธ๋ง์ธ ๊ฒฝ์ฐ Collab Chat์ ์๋์ผ๋ก ๋ชจ๋ฐ์ผ ์ต์ ํ ๋ ์ด์์์ผ๋ก ์ ํํฉ๋๋ค. ์ฑํ ์ฐฝ์ ํ ์คํธ ์์ ๋ ์์ง ์๊ณ ์ ์ฒด ํ๋ฉด์ผ๋ก ํ์๋๋ฉฐ, ๋ ์ฆ๊ฐ์ ์ธ ์ํธ์์ฉ์ ์ํด ์ ํ ์ง์ฐ์ด ์ ๊ฑฐ๋ฉ๋๋ค.
์ด ๋์์ ๋ด์ฅ๋์ด ์์ผ๋ฉฐ ๋ณ๋์ ๊ตฌ์ฑ์ ํ์ํ์ง ์์ต๋๋ค. ์์ ฏ์ ํ๋ฉด ํฌ๊ธฐ๋ฅผ ์๋์ผ๋ก ๊ฐ์งํ๊ณ ๊ทธ์ ๋ฐ๋ผ ์กฐ์ ํฉ๋๋ค.
์ฑํ ์ฐฝ ์ธํ
์ฑํ
์ฐฝ์ ๋ฐ์คํฌํฑ์์ ๋๋น๊ฐ 410px์ด๊ณ , ํ์ด๋ผ์ดํธ๋ ํ
์คํธ๋ฅผ ๊ฐ๋ฆฌํค๋ 16px ํ์ดํ๊ฐ ์์ต๋๋ค. ์ฐฝ์ ๋ทฐํฌํธ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ๋ฐ๋ผ ์๋์ผ๋ก ์์น๋ฅผ ์ง์ ํ๋ฉฐ, to-right, to-left, to-top, to-bottom ๊ฐ์ ์์น ์ง์ ํด๋์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด ์ฐฝ๋ค์ ์์, ๊ธ๊ผด, ๊ฐ๊ฒฉ ๋๋ ๊ธฐํ ์๊ฐ์ ์์ฑ์ ์กฐ์ ํ๊ธฐ ์ํด ์ฌ์ฉ์ ์ง์ CSS๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ฑํ ์ฐฝ์ ํ์ค FastComments ์์ ฏ๊ณผ ๋์ผํ ์ปดํฌ๋ํธ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ ์ญ ์ฌ์ฉ์ ์ง์ ๋ ์์๋ฉ๋๋ค.
์ง์ญํ
Collab Chat์ ํ์ค FastComments ์์ ฏ๊ณผ ๋์ผํ ๋ชจ๋ ์ง์ญํ ์ต์
์ ์ง์ํฉ๋๋ค. UI ํ
์คํธ๋ฅผ ๋ค๋ฅธ ์ธ์ด๋ก ํ์ํ๋ ค๋ฉด locale ์ต์
์ ์ค์ ํ์ธ์:

FastComments๋ ์์ญ ๊ฐ์ ์ธ์ด๋ฅผ ์ง์ํฉ๋๋ค. ๋ก์ผ์ผ ์ค์ ์ ํ๋กฌํํธ, ๋ฒํผ ๋ฐ ํ๋ ์ด์คํ๋ ํ ์คํธ๋ฅผ ํฌํจํ ๋ชจ๋ UI ํ ์คํธ์ ์ํฅ์ ์ค๋๋ค.
์์๋ ์ฌ์ฉ์ ์ง์ ์ต์
Collab Chat์ ํ์ค ๋๊ธ ์์ ฏ์ ํ์ฅํ๋ฏ๋ก, ๊ธฐ๋ณธ ์์ ฏ์ ๋ชจ๋ ์ฌ์ฉ์ ์ง์ ์ต์ ์ ์์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ฌ์ฉ์ ์ง์ CSS ํด๋์ค, ์ฌ์ฉ์ ์ง์ ๋ฒ์ญ, ์๋ฐํ ์ฌ์ฉ์ ์ง์ , ๋ ์ง ํ์ ์ง์ ๋ฑ ๋ง์ ํญ๋ชฉ์ด ํฌํจ๋ฉ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ์ ์ฒด ์ฌ์ฉ์ ์ง์ ์ต์ ๋ชฉ๋ก์ FastComments์ ๋ฉ์ธ ์ฌ์ฉ์ ์ง์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฌ์ฉ์ ์ง์ ํฐํธ ์ฌ์ฉ
์ฌ์ดํธ์์ ์ฌ์ฉ์ ์ง์ ํฐํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Collab Chat UI๋ ํ์ด์ง์ CSS์์ ํด๋น ํฐํธ๋ฅผ ์์ํฉ๋๋ค. ํ๋กํ
์ฑํ
์ฐฝ์ด ๋์ผํ ํฐํธ๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ ค๋ฉด ์์ ฏ ์ปค์คํฐ๋ง์ด์ ์ด์
๊ท์น์ ์์ฑํ๊ณ ํด๋น ๊ท์น์ ์ปค์คํ
CSS์์ @import๋ก ํฐํธ๋ฅผ ํฌํจํด์ผ ํ ์ ์์ต๋๋ค.
์ค์๊ฐ ๋๊ธฐํ 
Real-Time Updates
Collab Chat๋ WebSocket ์ฐ๊ฒฐ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ํ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋๊ธฐํํฉ๋๋ค. ๋๊ตฐ๊ฐ ์ ์ฃผ์์ ์์ฑํ๊ฑฐ๋ ๋๊ธ์ ์ถ๊ฐํ๊ฑฐ๋ ํ ๋ก ์ ์ญ์ ํ๋ฉด ๊ฐ์ ํ์ด์ง๋ฅผ ๋ณด๊ณ ์๋ ๋ค๋ฅธ ๋ชจ๋ ์ฌ์ฉ์๋ ์๋ก๊ณ ์นจ ์์ด ์ฆ์ ์ ๋ฐ์ดํธ๋ฅผ ํ์ธํฉ๋๋ค.
How WebSocket Sync Works
Collab Chat๋ฅผ ์ด๊ธฐํํ๋ฉด ์์ ฏ์ FastComments ์๋ฒ์ WebSocket ์ฐ๊ฒฐ์ ์ค์ ํฉ๋๋ค. ์ด ์ฐ๊ฒฐ์ ์ฌ์ฉ์์ ์ธ์ ๋์ ์ด๋ ค ์์ผ๋ฉฐ ํ์ฌ ํ์ด์ง์ ๊ด๋ จ๋ ์ ๋ฐ์ดํธ๋ฅผ ์์ ๋๊ธฐํฉ๋๋ค.
WebSocket ์์คํ
์ Collab Chat์ ๋ํด ์ธ ๊ฐ์ง ์ ํ์ ๋ธ๋ก๋์บ์คํธ ๋ฉ์์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค. new-text-chat ์ด๋ฒคํธ๋ ๋๊ตฐ๊ฐ ํ์ด์ง์ ์ ์ฃผ์์ ์์ฑํ ๋ ๋ฐ์ํฉ๋๋ค. updated-text-chat ์ด๋ฒคํธ๋ ๋๊ตฐ๊ฐ ๊ธฐ์กด ๋ํ๋ฅผ ์
๋ฐ์ดํธํ ๋ ๋ฐ์ํฉ๋๋ค. deleted-text-chat ์ด๋ฒคํธ๋ ๋๊ตฐ๊ฐ ์ฃผ์์ ์ญ์ ํ ๋ ๋ฐ์ํฉ๋๋ค.
Broadcast ID System
์ฌ์ฉ์๊ฐ ์์ ์ ๋์์ด ๋ค์ ๋ธ๋ก๋์บ์คํธ๋์ด ์์ ์๊ฒ ๋๋์์ค๋ ์์ฝ ํจ๊ณผ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ฐ ์
๋ฐ์ดํธ์๋ ๊ณ ์ ํ broadcastId๊ฐ ํฌํจ๋ฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ฃผ์์ ์์ฑํ๊ฑฐ๋ ์
๋ฐ์ดํธํ ๋ ํด๋น ํด๋ผ์ด์ธํธ๋ ํด๋น ์์
์ ๋ํ UUID๋ฅผ ์์ฑํฉ๋๋ค. WebSocket์ด ์
๋ฐ์ดํธ๋ฅผ ๋ชจ๋ ํด๋ผ์ด์ธํธ์ ๋ธ๋ก๋์บ์คํธํ๋ฉด, ์๋ ์์
์ ์ํํ ํด๋ผ์ด์ธํธ๋ ์์ ์ broadcastId์ ์ผ์นํ๊ธฐ ๋๋ฌธ์ ํด๋น ์
๋ฐ์ดํธ๋ฅผ ๋ฌด์ํฉ๋๋ค.
์ด๊ฒ์ ์ฌ์ฉ์๊ฐ ์๋ฒ๋ฅผ ํตํ ์๋ณต์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ UI์์ ๋ณ๊ฒฝ์ฌํญ์ ์ฆ์ ํ์ธํ ์ ์๋๋ก ํ๋ฉด์๋ ๋ค๋ฅธ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ๋๋ก ๋ณด์ฅํ์ฌ ์ํํ ์ํธ์์ฉ์ ์ ๊ณตํฉ๋๋ค.
Live User Count
์๋จ ๋ฐ์๋ ํ์ฌ ํ์ด์ง๋ฅผ ๋ณด๊ณ ์๋ ์ฌ์ฉ์ ์๊ฐ ํ์๋ฉ๋๋ค. ์ด ์์น๋ ์ฌ์ฉ์๊ฐ ๋ค์ด์ค๊ณ ๋๊ฐ์ ๋ฐ๋ผ ์ค์๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค. ์ฌ์ฉ์ ์๋ ๋์ผํ WebSocket ์ฐ๊ฒฐ์ ํตํด ์ ๊ณต๋๋ฉฐ ์ฐ๊ฒฐ ๋ฐ ์ฐ๊ฒฐ ํด์ ์ด๋ฒคํธ์ ๋ฐ๋ผ ์๋์ผ๋ก ์ฆ๊ฐ/๊ฐ์ํฉ๋๋ค.
Connection Resilience
๋คํธ์ํฌ ๋ฌธ์ ๋ ์๋ฒ ์ ์ง ๊ด๋ฆฌ๋ก ์ธํด WebSocket ์ฐ๊ฒฐ์ด ๋์ด์ง๋ฉด ์์ ฏ์ ์๋์ผ๋ก ๋ค์ ์ฐ๊ฒฐ์ ์๋ํฉ๋๋ค. ์ฌ์ฐ๊ฒฐ ๊ธฐ๊ฐ ๋์ ์ฌ์ฉ์๋ ๊ธฐ์กด ์ฃผ์๊ณผ ์ํธ์์ฉํ ์๋ ์์ง๋ง ์ฐ๊ฒฐ์ด ๋ณต๊ตฌ๋ ๋๊น์ง ๋ค๋ฅธ ์ฌ์ฉ์์ ์ค์๊ฐ ์ ๋ฐ์ดํธ๋ ๋ณผ ์ ์์ต๋๋ค.
๋ค์ ์ฐ๊ฒฐ๋๋ฉด ์์ ฏ์ ๋์น ์ ๋ฐ์ดํธ๊ฐ ์๋์ง ์ฌ๋๊ธฐํํฉ๋๋ค. ์ด๋ ์ฌ์ฉ์์ ๊ฐ์ ์์ด ํฌ๋ช ํ๊ฒ ์ด๋ฃจ์ด์ง๋๋ค.
Bandwidth Considerations
WebSocket ๋ฉ์์ง๋ ๊ฒฝ๋์ด๋ฉฐ ์ํ๋ฅผ ๋๊ธฐํํ๋ ๋ฐ ํ์ํ ์ต์ํ์ ์ ๋ณด๋ง ํฌํจํฉ๋๋ค. ์ ์ฃผ์์ ๋ง๋๋ ๋ฐ ์ผ๋ฐ์ ์ผ๋ก 1KB ๋ฏธ๋ง์ ๋์ญํญ์ด ์ฌ์ฉ๋ฉ๋๋ค. ์์คํ ์๋ ํ๋์ด ๋ง์ ๊ธฐ๊ฐ ๋์ ๋ฉ์์ง ๋น๋๋ฅผ ์ค์ด๊ธฐ ์ํ ์ง๋ฅํ ๋ฐฐ์นญ๋ ํฌํจ๋์ด ์์ต๋๋ค.
FastComments ๋์๋ณด๋์ ์ฌ์ฉ๋ ์งํ๋ pubSubMessageCount ๋ฐ pubSubBandwidth๋ฅผ ์ถ์ ํ๋ฏ๋ก ์ฌ์ดํธ ์ ๋ฐ์ ์ค์๊ฐ ๋๊ธฐํ ํ๋์ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค.
Cross-Tab Synchronization
์ฌ์ฉ์๊ฐ ๋์ผํ ํ์ด์ง๋ฅผ ์ฌ๋ฌ ๋ธ๋ผ์ฐ์ ํญ์์ ์ด์ด๋ ๊ฒฝ์ฐ ํ ํญ์์์ ์ ๋ฐ์ดํธ๋ ๋ค๋ฅธ ํญ์ ์ฆ์ ํ์๋ฉ๋๋ค. ์ด๋ ๋์ผํ WebSocket ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ ํตํด ์๋ํ๋ฉฐ ๋ณ๋์ ์ถ๊ฐ ๊ตฌ์ฑ์ ํ์ํ์ง ์์ต๋๋ค.
Security
WebSocket ๋ฉ์์ง๋ ๋ณด์ ์ฐ๊ฒฐ(WSS)์ ํตํด ์ ์ก๋๋ฉฐ ์ฌ์ฉ์๊ฐ ๊ถํ์ด ์๋ ๋ํ์ ๋ํ ์ ๋ฐ์ดํธ๋ง ์์ ํ๋๋ก ํ ๋ํธ ๊ฒ์ฆ์ ํฌํจํฉ๋๋ค. ์๋ฒ๋ ๋ฌด๋จ ์ก์ธ์ค๋ ์กฐ์์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ธ๋ก๋์บ์คํธํ๊ธฐ ์ ์ ๋ชจ๋ ์์ ์ ๊ฒ์ฆํฉ๋๋ค.
API ์ฐธ์กฐ 
API ๊ฐ์
Collab Chat์ ํ ์คํธ ๋ํ๋ฅผ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ ์ธ ๊ฐ์ REST API ์๋ํฌ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ์์ ฏ์ ์ฌ์ฉํ์ง ์๊ณ ๋ ์ฃผ์์ ๊ฒ์, ์์ฑ ๋ฐ ์ญ์ ํ ์ ์์ต๋๋ค.
์ด๋ค์ ๋ธ๋ผ์ฐ์ ์ฟ ํค๋ฅผ ํตํด ์ฌ์ฉ์๋ฅผ ์ธ์ฆํ๋ ๊ณต๊ฐ ์๋ํฌ์ธํธ์ ๋๋ค. API ํค๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์ฌ์ฉ์๋ ์ด๋ฌํ ์๋ํฌ์ธํธ์ ์ก์ธ์คํ๋ ค๋ฉด ๋ธ๋ผ์ฐ์ ์์ FastComments์ ๋ก๊ทธ์ธ๋์ด ์์ด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ URL
๋ชจ๋ Collab Chat API ์๋ํฌ์ธํธ๋ ๋ค์ ํ์์ ์์ต๋๋ค:

์ธ์ฆ
์ด ์๋ํฌ์ธํธ๋ค์ ๋ธ๋ผ์ฐ์ ์ฟ ํค๋ฅผ ํตํด ์ฌ์ฉ์๋ฅผ ์ธ์ฆํฉ๋๋ค. API ํค๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์ฌ์ฉ์๋ ์ด๋ฌํ ์๋ํฌ์ธํธ์ ์ก์ธ์คํ๋ ค๋ฉด ๋ธ๋ผ์ฐ์ ์์ FastComments์ ๋ก๊ทธ์ธ๋์ด ์์ด์ผ ํฉ๋๋ค.
๋ชจ๋ ๋ํ ๊ฐ์ ธ์ค๊ธฐ
ํน์ ํ์ด์ง์ ๋ํ ๋ชจ๋ ํ ์คํธ ๋ํ๋ฅผ ๊ฒ์ํฉ๋๋ค.
์๋ํฌ์ธํธ

๋งค๊ฐ๋ณ์
tenantId (๊ฒฝ๋ก ๋งค๊ฐ๋ณ์, ํ์)๋ ๊ทํ์ FastComments Tenant ID์
๋๋ค.
urlId (์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์, ํ์)๋ ๋ํ๋ฅผ ๊ฒ์ํ๋ ค๋ ํ์ด์ง ์๋ณ์์
๋๋ค.
์๋ต
์๋ต์๋ API ์ํ, ์ธ์ฆ๋ ๊ฒฝ์ฐ ํ์ฌ ์ฌ์ฉ์ ์ธ์
์ ๋ณด, ID, URL ๋ฐ ํ
์คํธ ๋ฒ์๊ฐ ํฌํจ๋ ๋ํ ๋ฐฐ์ด, ์ ๋ฆฌ๋ URL ์๋ณ์, ํ์ฌ ์ฌ์ฉ์๊ฐ ์ฌ์ดํธ ๊ด๋ฆฌ์ ๋๋ ์ค์ฌ์์ธ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ํ๋๊ทธ, ๊ทธ๋ฆฌ๊ณ ์ค์๊ฐ ๋๊ธฐํ๋ฅผ ์ํ WebSocket ์ฐ๊ฒฐ ์ธ๋ถ์ ๋ณด(tenantIdWS, urlIdWS, ๋ฐ userIdWS)๊ฐ ํฌํจ๋ฉ๋๋ค.
์์ ์์ฒญ

์์ ์๋ต

๋ํ ์์ฑ
ํน์ ํ ์คํธ ์ ํ์ ๋ํด ์ ํ ์คํธ ๋ํ๋ฅผ ์์ฑํฉ๋๋ค.
์๋ํฌ์ธํธ

๋งค๊ฐ๋ณ์
tenantId (๊ฒฝ๋ก ๋งค๊ฐ๋ณ์, ํ์)๋ ๊ทํ์ FastComments Tenant ID์
๋๋ค.
์์ฒญ ๋ณธ๋ฌธ์ JSON์ด์ด์ผ ํ๋ฉฐ ๋ค์ ํ์ ํ๋๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค.
urlId (string, ํ์)๋ ๊ธฐ๋ณธ ํ์ด์ง ์๋ณ์์
๋๋ค.
urlIdWithRange (string, ํ์)๋ ํ
์คํธ ๋ฒ์๊ฐ ๊ฒฐํฉ๋ URL๋ก, ์๋ฅผ ๋ค์ด my-page:p:0:15,0:45{abc123}์ ๊ฐ์ต๋๋ค.
pageTitle (string, ํ์)๋ ํ์ด์ง ์ ๋ชฉ์
๋๋ค.
selector (string, ํ์)๋ ์ ํ๋ ํ
์คํธ๋ฅผ ํฌํจํ๋ ์์์ DOM ๊ฒฝ๋ก์
๋๋ค.
range (string, ํ์)๋ ์ง๋ ฌํ๋ ํ
์คํธ ๋ฒ์๋ก ํ์์ startOffset:endOffset,startOffset:endOffset{checksum}์
๋๋ค.
createdFromCommentId (string, ํ์)๋ ์ด ์ฑํ
์ ์์ํ ๋๊ธ์ ID์
๋๋ค.
broadcastId (string, ํ์)๋ ์์ฝ ํจ๊ณผ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ์ค์๊ฐ ๋๊ธฐํ์ฉ UUID์
๋๋ค.
์๋ต
์๋ต์๋ API ์ํ์ ์๋ก ์์ฑ๋ ๋ํ์ ID๊ฐ ํฌํจ๋ฉ๋๋ค.
์์ ์์ฒญ

์์ ์๋ต

๋ํ ์ญ์
๊ธฐ์กด ํ ์คํธ ๋ํ๋ฅผ ์ญ์ ํฉ๋๋ค. ์ด ์๋ํฌ์ธํธ๋ ๊ด๋ฆฌ์ ๋๋ ์ค์ฌ์ ๊ถํ์ด ํ์ํ๊ฑฐ๋ ๋ํ๊ฐ ์ธ์ฆ๋ ์ฌ์ฉ์๊ฐ ์์ฑํ ๊ฒฝ์ฐ์๋ง ํ์ฉ๋ฉ๋๋ค.
์๋ํฌ์ธํธ

๋งค๊ฐ๋ณ์
tenantId (๊ฒฝ๋ก ๋งค๊ฐ๋ณ์, ํ์)๋ ๊ทํ์ FastComments Tenant ID์
๋๋ค.
chatId (๊ฒฝ๋ก ๋งค๊ฐ๋ณ์, ํ์)๋ ์ญ์ ํ๋ ค๋ ๋ํ์ ID์
๋๋ค.
broadcastId (์์ฒญ ๋ณธ๋ฌธ, ํ์)๋ ์ค์๊ฐ ๋๊ธฐํ๋ฅผ ์ํ UUID์
๋๋ค.
์์ ์์ฒญ

์์ ์๋ต

์์ฒญ ์ ํ
์ด๋ค ์๋ํฌ์ธํธ๋ ํ์ค FastComments API ์์ฒญ ์ ํ์ ์ ์ฉ์ ๋ฐ์ต๋๋ค. ์์ฒญ ์ ํ ๋ฏธ๋ค์จ์ด๋ ์ ์์ ์ธ ์ฌ์ฉ ํจํด์ ํ์ฉํ๋ฉด์ ๋จ์ฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ ๋ํธ๋ณ๋ก ์ ์ฉ๋ฉ๋๋ค.
์ค๋ฅ ์๋ต
๋ชจ๋ ์๋ํฌ์ธํธ๋ ํ์ค HTTP ์ํ ์ฝ๋๋ฅผ ๋ฐํํฉ๋๋ค. 400 ์๋ต์ ์๋ชป๋ ์์ฒญ ๋งค๊ฐ๋ณ์๋ฅผ ๋ํ๋ ๋๋ค. 401 ์๋ต์ ์ธ์ฆ ์คํจ๋ฅผ ์๋ฏธํฉ๋๋ค. 403 ์๋ต์ ๊ถํ ๋ถ์กฑ์ ๋ํ๋ ๋๋ค. 404 ์๋ต์ ๋ํ๋ฅผ ์ฐพ์ ์ ์์์ ์๋ฏธํฉ๋๋ค. 429 ์๋ต์ ์์ฒญ ํ๋ ์ด๊ณผ๋ฅผ ๋ํ๋ ๋๋ค.
์ค๋ฅ ์๋ต์๋ ์ธ๋ถ ์ ๋ณด๊ฐ ํฌํจ๋ JSON ๋ณธ๋ฌธ์ด ํฌํจ๋ฉ๋๋ค:

์ฌ์ฉ๋ ์ถ์
๋ํ๋ฅผ ์์ฑํ๋ฉด conversationCreateCount ์ฌ์ฉ๋ ์งํ๊ฐ ์ฆ๊ฐํฉ๋๋ค. ๋ชจ๋ WebSocket ๋๊ธฐํ ํ๋์ pubSubMessageCount ๋ฐ pubSubBandwidth๋ฅผ ์ฆ๊ฐ์ํต๋๋ค. ์ด๋ฌํ ์งํ๋ FastComments ๋์๋ณด๋์ ์ฌ์ฉ๋ ๋ถ์์์ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค.
์ง๋ฌธ ์์ผ์ ๊ฐ์?
FastComments Collab Chat์ ์ฌ๊ธฐ๊น์ง์ ๋๋ค! ์ง๋ฌธ์ด ์์ผ์๊ฑฐ๋ ๊ตฌํ์ ๋ํ ๋์์ด ํ์ํ์๊ฑฐ๋ ๊ธฐ๋ฅ ์ ์์ด ์์ผ์๋ฉด ์๋์ ์๋ ค์ฃผ์๊ฑฐ๋ ์ง์ํ์ ์ฐ๋ฝํด ์ฃผ์ธ์.
์ค์ ์์ ๋ฅผ ๋ณด๋ ค๋ฉด Collab Chat์ ํ๋ก๋์ ์์ ์ฌ์ฉํ๋ Govscent.org๋ฅผ ํ์ธํด ๋ณด์ธ์.