* New translations thread-mute.md (Chinese Simplified) * New translations webhook.md (Chinese Simplified) * New translations 1.troubleshooting.md (Chinese Simplified) * New translations donate.md (Chinese Simplified) * New translations misskey-hub.md (Chinese Simplified) * New translations announcement.md (Chinese Simplified) * New translations role.md (Chinese Simplified) * New translations 1.index.md (Chinese Simplified) * New translations bash.md (Chinese Simplified) * New translations docker.md (Chinese Simplified) * New translations kubernetes.md (Chinese Simplified) * New translations manual.md (Chinese Simplified) * New translations ubuntu-manual.md (Chinese Simplified) * New translations cdn.md (Chinese Simplified) * New translations disable-timelines.md (Chinese Simplified) * New translations 1.index.md (Chinese Simplified) * New translations permission.md (Chinese Simplified) * New translations 1.index.md (Chinese Simplified) * New translations 2.miauth.md (Chinese Simplified) * New translations 5.releases.md (Chinese Simplified) * New translations 1.index.md (Chinese Simplified) * New translations 3.oauth.md (Chinese Simplified) * New translations ja-jp.yml (Chinese Traditional) * New translations 1.about-misskey.md (Chinese Traditional) * New translations 2.get-started.md (Chinese Traditional) * New translations 3.join-server.md (Chinese Traditional) * New translations 4.things-to-know.md (Chinese Traditional) * New translations ads.md (Chinese Traditional) * New translations drive.md (Chinese Traditional) * New translations mfm.md (Chinese Traditional) * New translations mute-and-block.md (Chinese Traditional) * New translations pages.md (Chinese Traditional) * New translations poll.md (Chinese Traditional) * New translations share-form.md (Chinese Traditional) * New translations thread-mute.md (Chinese Traditional) * New translations webhook.md (Chinese Traditional) * New translations 1.troubleshooting.md (Chinese Traditional) * New translations donate.md (Chinese Traditional) * New translations misskey-hub.md (Chinese Traditional) * New translations announcement.md (Chinese Traditional) * New translations role.md (Chinese Traditional) * New translations 1.index.md (Chinese Traditional) * New translations bash.md (Chinese Traditional) * New translations docker.md (Chinese Traditional) * New translations kubernetes.md (Chinese Traditional) * New translations manual.md (Chinese Traditional) * New translations ubuntu-manual.md (Chinese Traditional) * New translations cdn.md (Chinese Traditional) * New translations disable-timelines.md (Chinese Traditional) * New translations 1.index.md (Chinese Traditional) * New translations permission.md (Chinese Traditional) * New translations 1.index.md (Chinese Traditional) * New translations 2.miauth.md (Chinese Traditional) * New translations publish-on-your-website.md (Chinese Traditional) * New translations 5.releases.md (Chinese Traditional) * New translations 1.index.md (Chinese Traditional) * New translations 3.oauth.md (Chinese Traditional) * New translations 1.about-misskey.md (English) * New translations 2.get-started.md (English) * New translations 3.join-server.md (English) * New translations 4.things-to-know.md (English) * New translations ads.md (English) * New translations drive.md (English) * New translations mfm.md (English) * New translations mute-and-block.md (English) * New translations pages.md (English) * New translations poll.md (English) * New translations share-form.md (English) * New translations thread-mute.md (English) * New translations webhook.md (English) * New translations 1.troubleshooting.md (English) * New translations donate.md (English) * New translations misskey-hub.md (English) * New translations announcement.md (English) * New translations role.md (English) * New translations 1.index.md (English) * New translations bash.md (English) * New translations docker.md (English) * New translations kubernetes.md (English) * New translations manual.md (English) * New translations ubuntu-manual.md (English) * New translations cdn.md (English) * New translations disable-timelines.md (English) * New translations 1.index.md (English) * New translations permission.md (English) * New translations 1.index.md (English) * New translations 2.miauth.md (English) * New translations 5.releases.md (English) * New translations 1.index.md (English) * New translations 3.oauth.md (English) * New translations 1.about-misskey.md (Indonesian) * New translations 2.get-started.md (Indonesian) * New translations 3.join-server.md (Indonesian) * New translations 4.things-to-know.md (Indonesian) * New translations ads.md (Indonesian) * New translations drive.md (Indonesian) * New translations mfm.md (Indonesian) * New translations mute-and-block.md (Indonesian) * New translations pages.md (Indonesian) * New translations poll.md (Indonesian) * New translations share-form.md (Indonesian) * New translations thread-mute.md (Indonesian) * New translations webhook.md (Indonesian) * New translations 1.troubleshooting.md (Indonesian) * New translations donate.md (Indonesian) * New translations misskey-hub.md (Indonesian) * New translations announcement.md (Indonesian) * New translations role.md (Indonesian) * New translations 1.index.md (Indonesian) * New translations bash.md (Indonesian) * New translations docker.md (Indonesian) * New translations kubernetes.md (Indonesian) * New translations manual.md (Indonesian) * New translations ubuntu-manual.md (Indonesian) * New translations cdn.md (Indonesian) * New translations disable-timelines.md (Indonesian) * New translations 1.index.md (Indonesian) * New translations permission.md (Indonesian) * New translations 1.index.md (Indonesian) * New translations 2.miauth.md (Indonesian) * New translations 5.releases.md (Indonesian) * New translations 1.index.md (Indonesian) * New translations 3.oauth.md (Indonesian) * New translations 5.releases.md (Korean) * New translations ja-jp.yml (English) * New translations docker.md (English) * New translations ja-jp.yml (Indonesian) * New translations 5.releases.md (Korean) * New translations ja-jp.yml (Indonesian) * New translations 1.about-misskey.md (Indonesian) * New translations 1.index.md (Indonesian) * New translations ads.md (Indonesian) * New translations antenna.md (Indonesian) * New translations charts.md (Indonesian) * New translations clip.md (Indonesian) * New translations custom-emoji.md (Indonesian) * New translations deck.md (Indonesian) * New translations drive.md (Indonesian) * New translations favorite.md (Indonesian) * New translations follow.md (Indonesian) * New translations hashtag.md (Indonesian) * New translations mention.md (Indonesian) * New translations mfm.md (Indonesian) * New translations 1.index.md (Indonesian) * New translations announcement.md (Indonesian) * New translations bash.md (Indonesian) * New translations ja-jp.yml (Indonesian) * New translations mute-and-block.md (Indonesian) * New translations pages.md (Indonesian) * New translations apps.md (Indonesian) * New translations donate.md (Indonesian) * New translations bash.md (Indonesian) * New translations docker.md (Indonesian) * New translations manual.md (Indonesian) * New translations 1.about-misskey.md (Chinese Traditional) * New translations 1.about-misskey.md (Chinese Traditional) * New translations create-plugin.md (French) * New translations create-plugin.md (Italian) * New translations create-plugin.md (Polish) * New translations create-plugin.md (Chinese Simplified) * New translations create-plugin.md (Chinese Traditional) * New translations create-plugin.md (Indonesian) * New translations aiscript.md (French) * New translations aiscript.md (Italian) * New translations aiscript.md (Korean) * New translations aiscript.md (Polish) * New translations aiscript.md (Chinese Simplified) * New translations aiscript.md (Chinese Traditional) * New translations aiscript.md (English) * New translations aiscript.md (Indonesian) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (Chinese Traditional) * New translations troubleshooting.md (French) * New translations libraries.md (French) * New translations troubleshooting.md (Italian) * New translations libraries.md (Italian) * New translations troubleshooting.md (Korean) * New translations libraries.md (Korean) * New translations troubleshooting.md (Polish) * New translations libraries.md (Polish) * New translations troubleshooting.md (Chinese Simplified) * New translations libraries.md (Chinese Simplified) * New translations troubleshooting.md (Chinese Traditional) * New translations libraries.md (Chinese Traditional) * New translations troubleshooting.md (English) * New translations libraries.md (English) * New translations troubleshooting.md (Indonesian) * New translations libraries.md (Indonesian) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (French) * New translations 2.miauth.md (French) * New translations ja-jp.yml (Italian) * New translations 2.miauth.md (Italian) * New translations ja-jp.yml (Korean) * New translations ja-jp.yml (Polish) * New translations 2.miauth.md (Polish) * New translations ja-jp.yml (Chinese Simplified) * New translations 2.miauth.md (Chinese Simplified) * New translations 2.miauth.md (Chinese Traditional) * New translations ja-jp.yml (English) * New translations 2.miauth.md (English) * New translations ja-jp.yml (Indonesian) * New translations 2.miauth.md (Indonesian) * Revert "New translations 1.about-misskey.md (English)" This reverts commit2b9572c2cf
. * Revert "New translations 2.get-started.md (English)" This reverts commit2fa05a5aee
. * Revert "New translations 4.things-to-know.md (English)" This reverts commit698c5e980d
. * Revert "New translations ads.md (English)" This reverts commitf0e1cd2965
. * Revert "New translations mfm.md (English)" This reverts commit51dcc0fc10
. * Revert "New translations webhook.md (English)" This reverts commitcfbebc5783
. * Revert "New translations 1.index.md (English)" This reverts commit67d2bec45c
. * Revert "New translations disable-timelines.md (English)" This reverts commit19ead90df6
. * Revert "New translations webhook.md (French)" This reverts commit52e6a8429a
. * Revert "New translations webhook.md (Chinese Traditional)" This reverts commit395f0fbc4a
. * Revert "New translations webhook.md (Polish)" This reverts commitac4e2c534e
. * Revert "New translations webhook.md (Korean)" This reverts commit14853e1eab
. * Revert "New translations pages.md (Korean)" This reverts commitf88e73d1ce
. * Revert "New translations bash.md (Korean)" This reverts commit60c9fae6a8
. * Revert "New translations kubernetes.md (Korean)" This reverts commit2239e8fd23
. * Revert "New translations ubuntu-manual.md (Korean)" This reverts commit3aab982625
. * Revert "New translations 1.about-misskey.md (Chinese Traditional)" This reverts commit5ac92102db
. * Revert "New translations 2.get-started.md (Chinese Traditional)" This reverts commitd090253e34
. * Revert "New translations 3.join-server.md (Chinese Traditional)" This reverts commit634db4d49b
. * Revert "New translations 4.things-to-know.md (Chinese Traditional)" This reverts commit383ee08013
. * Revert "New translations ads.md (Chinese Traditional)" This reverts commit6ed3b6885f
. * Revert "New translations drive.md (Chinese Traditional)" This reverts commit988cacb17e
. * Revert "New translations mfm.md (Chinese Traditional)" This reverts commit6b53e36fc4
. * Revert "New translations mute-and-block.md (Chinese Traditional)" This reverts commit44b1b3c723
. * Revert "New translations pages.md (Chinese Traditional)" This reverts commit4e60747a55
. * Revert "New translations poll.md (Chinese Traditional)" This reverts commit00385dc6a1
. * Revert "New translations share-form.md (Chinese Traditional)" This reverts commit8858eaf2f7
. * Revert "New translations thread-mute.md (Chinese Traditional)" This reverts commitd07bd70000
. * Revert "New translations 1.troubleshooting.md (Chinese Traditional)" This reverts commit7405a91ff9
. * fix * New translations aiscript.md (Korean) * New translations ja-jp.yml (Chinese Traditional) * New translations troubleshooting.md (Korean) * New translations ja-jp.yml (French) * New translations ja-jp.yml (Italian) * New translations ja-jp.yml (Korean) * New translations ja-jp.yml (Polish) * New translations ja-jp.yml (Chinese Simplified) * New translations ja-jp.yml (English) * New translations ja-jp.yml (Indonesian) * New translations 5.releases.md (Korean) * fix * fix * fix * fix
8.1 KiB
description |
---|
스트리밍 API를 사용하면, 실시간으로 다양한 정보(예를 들어 타임라인에 새로운 노트가 올라왔다거나, 리액션을 받았거나 팔로우 되었다거나 등)를 받거나, 다양한 작업을 할 수 있습니다. |
스트리밍 API
:::tip
스트리밍 API를 사용하면, 실시간으로 다양한 정보(예를 들어 타임라인에 새로운 노트가 올라왔다거나, 리액션을 받았거나 팔로우 되었다거나 등)를 받거나, 다양한 작업을 할 수 있습니다.
:::
스트리밍 API를 이용하려면, 먼저 Misskey 서버에 websocket으로 접속이 필요합니다.
스트림에 접속하기
스트리밍 API를 이용하려면, 먼저 Misskey 서버에 websocket으로 접속이 필요합니다.
아래 형식의 URL로 websocket에 접속합니다:
wss://{host}/streaming?i={token}
여기서,
{host}
의 부분을 접속하고 싶은 서버의 호스트명으로 바꿉니다.{token}
의 부분은, 유저의 액세스 토큰으로 바꿉니다.
:::tip
액세스 토큰은 생략할 수 있지만, 이 경우 비로그인으로 작동하기 때문에 수신할 수 있는 정보나 조작은 제한됩니다.
:::
스트림에 접속하면, 후술할 노트의 구독을 하는 것이 가능합니다. 그러나, 아직 이 단계에서는 타임라인의 새로운 노트를 확인하는 등의 행동을 할 수 없습니다. 이러한 이벤트를 수신하기 위해서는, 스트림 상에 후술할 채널에 접속해야 합니다.
**스트림상에서 주고 받는 정보는 모두 JSON입니다.어떠한 채널이 있는 지는, 채널 목록를 참조해 주세요.
채널에 접속하기
Misskey의 스트리밍 API에는 채널이라는 개념이 있습니다.이것은 송수신하는 정보를 분리하기 위한 구조입니다. 스트림 상에서 채널에 접속함으로써, 다양한 정보를 받거나 보낼 수 있게 됩니다.
:::tip
하나의 스트림 연결에서, 동시에 여러 개의 채널에 접속할 수 있습니다.
:::
아래에서 채널의 사용 방법을 설명합니다.어떠한 채널이 있는 지는, 채널 목록를 참조해 주세요.
채널에 접속하기
채널에 연결하려면 다음과 같은 데이터를 JSON으로 스트림에 전송합니다.
{
type: 'connect',
body: {
channel: 'xxxxxxxx',
id: 'foobar',
params: {
...
}
}
}
여기서,
channel
에는 접속하고자 하는 채널명을 입력합니다.채널 목록를 참고하세요.id
에는 해당 채널과 상호작용할 수 있는 임의의 ID를 설정합니다.스트림에는 다양한 메시지가 흘러나오기 때문에 어떤 채널에서 온 메시지인지 식별해야 하기 때문입니다.이 ID는 UUID나 난수 같은 것이 될 수 있습니다.params
는 채널에 연결할 때의 파라미터입니다.채널에 따라 연결 시 필요한 파라미터가 다릅니다.파라미터가 필요 없는 채널에 연결할 때는 이 속성을 생략할 수 있습니다.
:::tip
ID는 채널 단위가 아니라 '채널 연결 단위'입니다.왜냐하면 같은 채널에 서로 다른 파라미터로 다중접속 하는 경우도 있기 때문입니다.
:::
채널에서 메시지 받기
예를 들어, 타임라인 채널의 경우 새로운 게시물이 올라오면 메시지를 발신합니다.해당 메시지를 받으면 타임라인에 새로운 게시물이 올라왔다는 것을 실시간으로 알 수 있습니다.
채널이 메시지를 보내면 다음과 같은 데이터가 JSON으로 스트림에 유입됩니다.
{
type: 'channel',
body: {
id: 'foobar',
type: 'something',
body: {
some: 'thing'
}
}
}
여기서,
id
에는 앞서 언급한 해당 채널에 접속할 때 설정한 ID가 설정되어 있습니다.이제 이 메시지가 어느 채널에서 온 것인지 알 수 있습니다.type
에는 메시지 종류가 설정됩니다.채널에 따라 어떤 종류의 메시지가 흘러나오는지는 달라질 수 있습니다.body
에는 메시지 내용이 설정됩니다.채널에 따라 어떤 내용의 메시지가 흘러나오는지는 달라질 수 있습니다.
채널에 메시지 보내기
채널에 따라서는 메시지를 받을 수 있을 뿐만 아니라, 여기에서 메시지를 보내거나 어떤 조작을 할 수 있는 경우도 있습니다.
채널에 메시지를 보내려면 다음과 같은 데이터를 JSON으로 스트림에 전송합니다.
{
type: 'channel',
body: {
id: 'foobar',
type: 'something',
body: {
some: 'thing'
}
}
}
여기서,
id
에는 앞서 설명한 해당 채널에 접속할 때 설정한 ID를 설정합니다.이제 이 메시지가 어떤 채널을 대상으로 하는 메시지인지 식별할 수 있습니다.type
에는 메시지 종류를 설정합니다.채널에 따라 어떤 종류의 메시지를 받을 수 있는지는 달라질 수 있습니다.body
에는 메시지 내용을 설정합니다.채널에 따라 어떤 내용의 메시지를 받아들이는지는 달라질 수 있습니다.
채널 연결 끊기
채널에서 연결을 끊으려면 다음과 같은 데이터를 JSON으로 스트림에 전송합니다.
{
type: 'disconnect',
body: {
id: 'foobar'
}
}
여기서,
id
에는 앞서 설명한 해당 채널에 접속할 때 설정한 ID를 설정합니다.
게시물 캡처
Misskey는 게시물 캡쳐라는 메커니즘을 제공하고 있습니다.지정한 게시물의 이벤트를 스트림으로 받아볼 수 있는 기능입니다.
예를 들어 타임라인을 가져와서 사용자에게 보여줬다고 가정해 봅시다.여기서 누군가가 해당 타임라인에 포함된 어떤 게시물에 리액션을 했다고 가정해봅시다. 하지만 클라이언트 입장에서는 어떤 게시물에 리액션이 붙었다는 것을 알 길이 없기 때문에 실시간으로 리액션을 타임라인의 게시물에 반영하여 표시하는 등의 작업을 할 수 없습니다.
이 문제를 해결하기 위해 Misskey는 게시물 캡처 기능을 제공하고 있습니다.게시물을 캡처하면 해당 게시물에 대한 이벤트를 수신할 수 있기 때문에 실시간으로 반응을 반영할 수 있습니다.
아래에서는 게시물 캡처 기능을 사용하는 방법을 설명합니다.어떤 캡처 이벤트가 있는지는 캡처 이벤트 목록에서 확인할 수 있습니다.
게시물 캡처하기
게시물을 캡처하려면 스트림에 다음과 같은 메시지를 보냅니다.
{
type: 'subNote',
body: {
id: 'xxxxxxxxxxxxxxxx'
}
}
해당 게시물이 더 이상 화면에 표시되지 않거나, 해당 게시물에 대한 이벤트를 더 이상 받을 필요가 없을 때는 캡처 해제를 신청하세요.
id
에 캡처하고자 하는 게시물의id
를 설정합니다.
이 메시지를 보내면 Misskey에 캡쳐를 요청하는 것이며, 이후 해당 게시물에 대한 이벤트가 흘러나오게 됩니다.
여기서,
{
type: 'noteUpdated',
body: {
id: 'xxxxxxxxxxxxxxxx',
type: 'reacted',
body: {
reaction: 'like',
userId: 'yyyyyyyyyyyyyyyy'
}
}
}
이 메시지를 보내면 이후 해당 게시물에 대한 이벤트가 발생하지 않습니다.
body
내의id
에는 이벤트를 발생시킨 게시물의 ID가 설정됩니다.body
내의type
에는 이벤트의 종류가 설정됩니다.body
내의body
에는 이벤트의 세부 정보가 설정됩니다.
게시물 캡쳐 해제하기
해당 게시물이 더 이상 화면에 표시되지 않거나, 해당 게시물에 대한 이벤트를 더 이상 받을 필요가 없을 때는 캡처 해제를 신청하세요.
다음 메시지를 보냅니다:
{
type: 'unsubNote',
body: {
id: 'xxxxxxxxxxxxxxxx'
}
}
여기서,
id
에 캡처를 해제하고 싶은 게시물의id
를 설정합니다.
이 메시지를 보내면 이후 해당 게시물에 대한 이벤트가 발생하지 않습니다.