Skip to content

ストリーミングAPIを実装する #2

@EbiseLutica

Description

@EbiseLutica

Misskeyのストリーミングを購読する機能を実装する

基本

現在調整中のため、たびたびAPIが変わる可能性がある

// Misskey mi;

var cid = Guid.NewGuid().ToString();
var st = mi.OpenStreaming();

// 受信
st.Received += (StreamingResponse res) =>
{
  if (res.Type == "channel" && res.Raw["body"] is Dictionary<string, object> body && body["id"] == cid && body["note"] is Dictionary<string, object> note)
  {
    Console.WriteLine(note["text"] ?? "null");
  }
};

// 購読
await st.SendAsync("connect", new
{
  id = cid,
  channel = "hybridTimeline",
});

// WSを切断するときは次のように
st.Dispose();

拡張

いくつかのシナリオで使いやすいようヘルパーイベントがある

var st = mi.OpenStreaming(); // StreamingContext

// チャンネル接続
var main = st.ConnectChannel("main"); // ChannelStreamingContext
var tl = st.ConnectChannel("timeline"); // ChannelStreamingContext

// チャンネル接続解除
main.Dispose();
tl.Dispose();

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions