92302


提示コードですが以下はストリームでSNSのタイムラインの投稿を取得するコードです。コンソール画面は投稿が来たときの出力です。

##### 知りたいこと

コンソール出力の`event: update`を取得する方法が知りたい。  
一行づつ読み込んでいるので最初の一行を取得して文字列比較すればできると思いますが  
`evnet:`とあるので専用に取得する方法があれば知りたいです。

##### 調べたこと

参考サイト参考に調べましたがストリームは`GetStreamAsync`で取得してその戻り値が`stream`で取得する関数等も見当たらないため取得方法がわかりません。

##### 参考サイト

GetStreamAsync: <https://learn.microsoft.com/ja-
jp/dotnet/api/system.net.http.httpclient.getstreamasync?view=net-7.0#system-
net-http-httpclient-getstreamasync(system-uri-system-threading-
cancellationtoken)>

stream: <https://learn.microsoft.com/ja-
jp/dotnet/api/system.io.stream?view=net-7.0>

##### コンソール出力

[code]

    あああ
    :)
    :thump
    event: update
    data: {"id":"109363075575162689","created_at":"2022-11-18T05:08:21.428Z","in_reply_to_id":null,"in_reply_to_account_id":
    ...
    ...
    省略
    
    
[/code]

##### ソースコード

[code]

            //     var response = await client.GetAsync("https://"+ instance + "/api/v1/timelines/home?" + Method_Parameter.GetHomeTimeLine(auth_code,since_id,max_id,min_id,limit,local).ReadAsStringAsync().Result);
                    var response = await client.GetStreamAsync("https://mstdn.jp/api/v1/streaming/user");
                    //var response = await client.GetStreamAsync("https://mstdn.jp/api/v1/streaming/public");
                var streamReader = new StreamReader(response);
    
                string? str = null;
                
                while(true)
                {
                    var message = await streamReader.ReadLineAsync();
                    if(message == null)
                    {
                        break;
                    }
                    else
                    {
                        str += message;
                    }
    
                    Console.WriteLine(message);
                }
    
    
                    Console.WriteLine(str);
                    JObject json = JObject.Parse(str);
                    foreach (var e in json)
                    {
                        Console.WriteLine(e);
                    }
                   
    
[/code]


CC BY-SA 4.0
2022-11-18T05:14:26.830
92294
2022-11-18T21:20:49.743
55177
question
c#
httpclient stream処理でeventを取得したい。


> コンソール出力の`event: update`を取得する方法が知りたい。  
>  一行づつ読み込んでいるので最初の一行を取得して文字列比較すればできると思いますが

取得した後どうするのか、プログラムの目的を見失っていませんか？
質問の範囲外とされていますが、取得した後、当該データを解析することになるのではないでしょうか？  
そうであれば順序を逆にし、ストリーム全体を解析し、解析結果から`event:
update`に該当する部分を見つけるべきです。（そうしないと、誰かのトート内に `event: update`
という文字列が含まれていただけでストリーム解析を誤りかねません。）

> `evnet:`とあるので専用に取得する方法があれば知りたいです。

単なる文字列です。特別な意味はなく、専用の処理もありません。


CC BY-SA 4.0
2022-11-18T21:20:49.743
92302
2022-11-18T21:20:49.743
4236
92294
answer