.NET ラボ 2023/01/28 での発表資料
GitHub - TypedSignalR.Client.DevTools - TypedSignalR.Client - TypedSignalR.Client.TypeScript Twitter Blog neno.dev
SignalR を使ったアプリケーション開発をより快適に!.NET ラボ 2023/01/28何縫ねの。
View Slide
自己紹介1• 所属: NTTコミュニケーションズイノベーションセンター• 趣味: C#, OSS, ドール, 一眼(α7 IV)• 執心領域• C# ⇔ TypeScript• SignalR何縫ねの。nenoNaninunenoMakeブログ https://blog.neno.devその他 https://neno.dev
SignalR を使ったアプリケーション開発どうしてますか?2
SignalR を使ったアプリケーション開発3• SwaggerUI 使ってますよね。• ASP.NET Core のテンプレに組み込まれている。WEB API の場合…
SignalR を使ったアプリケーション開発4• SwaggerUI 使ってますよね。• ASP.NET Core のテンプレに組み込まれている。WEB API の場合…WEB API を定義したらエンドポイントを叩けるGUI が自動生成される
SignalR を使ったアプリケーション開発5SignalR を使う場合は?
SignalR を使ったアプリケーション開発6たぶん多くの人がこんな感じ。
SignalR を使ったアプリケーション開発7SignalR Hub(server)たぶん多くの人がこんな感じ。
SignalR を使ったアプリケーション開発8SignalR Hub(server)たぶん多くの人がこんな感じ。WEBFrontendNative GUI App(WPF, etc.)
SignalR を使ったアプリケーション開発9SignalR Hub(server)たぶん多くの人がこんな感じ。WEBFrontendNative GUI App(WPF, etc.)開発中のプロダクトのclient app に手を入れる開発中のプロダクトのclient app に手を入れる
SignalR を使ったアプリケーション開発10SignalR Hub(server)たぶん多くの人がこんな感じ。WEBFrontendNative GUI App(WPF, etc.)開発中のプロダクトのclient app に手を入れる開発中のプロダクトのclient app に手を入れるちょっと試したいだけなのに適当な場所にボタンと入力フィールド生やしてコールバックバインドしてサーバから送られてきたデータをどっかに出力してうんぬんかんぬん
SignalR を使ったアプリケーション開発11SignalR Hub(server)たぶん多くの人がこんな感じ。WEBFrontendNative GUI App(WPF, etc.)開発中のプロダクトのclient app に手を入れる開発中のプロダクトのclient app に手を入れるちょっと試したいだけなのに適当な場所にボタンと入力フィールド生やしてコールバックバインドしてサーバから送られてきたデータをどっかに出力してうんぬんかんぬんConsoleApp
SignalR を使ったアプリケーション開発12SignalR Hub(server)たぶん多くの人がこんな感じ。WEBFrontendNative GUI App(WPF, etc.)ConsoleApp開発用の Console App を用意開発項目に合わせ都度変更開発中のプロダクトのclient app に手を入れる開発中のプロダクトのclient app に手を入れるちょっと試したいだけなのに適当な場所にボタンと入力フィールド生やしてコールバックバインドしてサーバから送られてきたデータをどっかに出力してうんぬんかんぬん
SignalR を使ったアプリケーション開発13SignalR Hub(server)たぶん多くの人がこんな感じ。WEBFrontendNative GUI App(WPF, etc.)ConsoleApp開発用の Console App を用意開発項目に合わせ都度変更開発中のプロダクトのclient app に手を入れる開発中のプロダクトのclient app に手を入れるちょっと試したいだけなのに適当な場所にボタンと入力フィールド生やしてコールバックバインドしてサーバから送られてきたデータをどっかに出力してうんぬんかんぬん複数のコネクション張るためにコンソール複数開いてうんぬん
SignalR を使ったアプリケーション開発14SignalR Hub(server)たぶん多くの人がこんな感じ。WEBFrontendNative GUI App(WPF, etc.)ConsoleApp開発用の Console App を用意開発項目に合わせ都度変更開発中のプロダクトのclient app に手を入れる開発中のプロダクトのclient app に手を入れるちょっと試したいだけなのに適当な場所にボタンと入力フィールド生やしてコールバックバインドしてサーバから送られてきたデータをどっかに出力してうんぬんかんぬん複数のコネクション張るためにコンソール複数開いてうんぬん入力も出力もコンソール。つまり割としっかり実装しないとコンソールに何か書き込んでいる時に受信したデータがコンソール上に表示され…とかが発生してうんぬんかんぬん
SignalR を使ったアプリケーション開発15😭めんどくさい😭
SignalR を使ったアプリケーション開発16😭めんどくさい😭双方向の RPC ですし、さらにgrouping とかが絡むため REST に比べてメンドクサイのは仕方がないといえば仕方ない…?いやしかし…!
SignalR を使ったアプリケーション開発17😭めんどくさい😭SignalR の Hub / Receiver のinterface 定義をしたらHub / Receiver のメソッドを呼び出せる/出されるGUI app が自動生成されれば大解決のハズ!双方向の RPC ですし、さらにgrouping とかが絡むため REST に比べてメンドクサイのは仕方がないといえば仕方ない…?いやしかし…!
SignalR を使ったアプリケーション開発18SignalR にもSwaggerUI 的なのが必要…!
SignalR を使ったアプリケーション開発19• SignalR 使ったアプリを快適に開発するための GUI を自動生成• Hub のメソッドの呼び出し• Hub から呼ばれたメソッドに渡されたデータの表示• 必要な手順は2点だけ• http pipeline に middleware の追加• Hub と Receiver を定義してるinterface に属性を付与• JWT 認証をサポート• プリミティブ型以外の入力/表示はJSON 形式https://github.com/nenoNaninu/TypedSignalR.Client.DevToolsTypedSignalR.Client.DevToolsSignalR 版 SwaggerUI
TypedSignalR.Client.DevTools20https://github.com/nenoNaninu/TypedSignalR.Client.DevTools使い方①Middleware を追加②属性を付与
TypedSignalR.Client.DevTools21https://github.com/nenoNaninu/TypedSignalR.Client.DevTools使い方①Middleware を追加②属性を付与Middleware を追加
TypedSignalR.Client.DevTools22https://github.com/nenoNaninu/TypedSignalR.Client.DevTools使い方属性を付与①Middleware を追加②属性を付与Middleware を追加
TypedSignalR.Client.DevTools23https://github.com/nenoNaninu/TypedSignalR.Client.DevTools使い方属性を付与属性を付与①Middleware を追加②属性を付与Middleware を追加
TypedSignalR.Client.DevTools24https://github.com/nenoNaninu/TypedSignalR.Client.DevTools使い方属性を付与属性を付与①Middleware を追加②属性を付与通常通りに実装。特別な事必要なし。Middleware を追加
TypedSignalR.Client.DevTools25あとは /signalr-dev にアクセスすればいいだけ!https://github.com/nenoNaninu/TypedSignalR.Client.DevTools使い方
TypedSignalR.Client.DevTools26あとは /signalr-dev にアクセスすればいいだけ!https://github.com/nenoNaninu/TypedSignalR.Client.DevTools使い方自動で開発用 GUI が構築(まるで SwaggerUI)
TypedSignalR.Client.DevTools27あとは /signalr-dev にアクセスすればいいだけ!https://github.com/nenoNaninu/TypedSignalR.Client.DevTools使い方自動で開発用 GUI が構築(まるで SwaggerUI)launchSettings.json にswagger 用と signalr-dev 用を用意しておくと便利
TypedSignalR.Client.DevTools28サポートしている機能https://github.com/nenoNaninu/TypedSignalR.Client.DevTools• Client-to-server invocation• Server-to-client invocation• Client-to-server streaming• Server-to-client streaming• JWT Authentification
TypedSignalR.Client.DevTools29Client-to-server invocationhttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#built-in-types
TypedSignalR.Client.DevTools30Client-to-server invocationhttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#built-in-types
TypedSignalR.Client.DevTools31Client-to-server invocationhttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#built-in-typesメソッド名
TypedSignalR.Client.DevTools32Client-to-server invocationhttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#built-in-typesパラメータ名 : 型名メソッド名
TypedSignalR.Client.DevTools33Client-to-server invocationhttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#built-in-typesパラメータ名 : 型名メソッド名
TypedSignalR.Client.DevTools34Client-to-server invocationhttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#built-in-typesパラメータ名 : 型名 ユーザ定義型はJSON 形式で入力メソッド名
TypedSignalR.Client.DevTools35Client-to-server invocationhttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#built-in-typesパラメータ名 : 型名 ユーザ定義型はJSON 形式で入力Guid / DateTime 等の Built-in でサポートしている型は README を参照…!メソッド名
Guid / DateTime 等の Built-in でサポートしている型は README を参照…!TypedSignalR.Client.DevTools36Client-to-server invocationhttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#built-in-typesパラメータ名 : 型名 ユーザ定義型はJSON 形式で入力メソッド名
Guid / DateTime 等の Built-in でサポートしている型は README を参照…!TypedSignalR.Client.DevTools37Client-to-server invocationhttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#built-in-typesパラメータ名 : 型名 ユーザ定義型はJSON 形式で入力メソッド名 JSON が壊れてたらちゃんと教えてくれます。
TypedSignalR.Client.DevTools38Client-to-server invocationhttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools
TypedSignalR.Client.DevTools39Client-to-server invocationhttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools
TypedSignalR.Client.DevTools40Client-to-server invocation戻り値の型https://github.com/nenoNaninu/TypedSignalR.Client.DevTools
TypedSignalR.Client.DevTools41Client-to-server invocation戻り値の型戻り値はJSON 形式で表示https://github.com/nenoNaninu/TypedSignalR.Client.DevTools
https://github.com/nenoNaninu/TypedSignalR.Client.DevTools#server-to-client-streamingTypedSignalR.Client.DevTools42Server-to-client invocation (broadcast)
https://github.com/nenoNaninu/TypedSignalR.Client.DevTools#server-to-client-streamingTypedSignalR.Client.DevTools43Server-to-client invocation (broadcast)
https://github.com/nenoNaninu/TypedSignalR.Client.DevTools#server-to-client-streamingTypedSignalR.Client.DevTools44Server-to-client invocation (broadcast)
https://github.com/nenoNaninu/TypedSignalR.Client.DevTools#server-to-client-streamingTypedSignalR.Client.DevTools45Server-to-client invocation (broadcast)右のパネルにサーバから呼ばれた メソッド名 と渡されたデータ が表示
https://github.com/nenoNaninu/TypedSignalR.Client.DevTools#server-to-client-streamingTypedSignalR.Client.DevTools46Server-to-client invocation (broadcast)右のパネルにサーバから呼ばれた メソッド名 と渡されたデータ が表示Indent のcheck boxをマークするとインデントされた JSON が表示される
TypedSignalR.Client.DevTools47Client-to-server streaminghttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#client-to-server-streaming
TypedSignalR.Client.DevTools48Client-to-server streaminghttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#client-to-server-streaming
TypedSignalR.Client.DevTools49Client-to-server streamingIAsyncEnumerableChannelReaderhttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#client-to-server-streaming
TypedSignalR.Client.DevTools50Client-to-server streamingIAsyncEnumerableChannelReaderパラメータに何れかが存在したらClient-to-server streaminghttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#client-to-server-streaming
TypedSignalR.Client.DevTools51Client-to-server streamingIAsyncEnumerableChannelReaderパラメータに何れかが存在したらClient-to-server streaminghttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#client-to-server-streamingNext, Complete, Cancel の 3 つでストリームを操作
TypedSignalR.Client.DevTools52Server-to-client streaminghttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#server-to-client-streaming
TypedSignalR.Client.DevTools53Server-to-client streaminghttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#server-to-client-streaming
TypedSignalR.Client.DevTools54Server-to-client streaminghttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#server-to-client-streamingIAsyncEnumerableTask>Task>
TypedSignalR.Client.DevTools55Server-to-client streaminghttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#server-to-client-streamingIAsyncEnumerableTask>Task>Return Type が以下の何れかならServer-to-client streaming
TypedSignalR.Client.DevTools56Server-to-client streaminghttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#server-to-client-streamingIAsyncEnumerableTask>Task>Return Type が以下の何れかならServer-to-client streaming
TypedSignalR.Client.DevTools57Server-to-client streaminghttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#server-to-client-streamingIAsyncEnumerableTask>Task>[EnumeratorCancellation]とセットReturn Type が以下の何れかならServer-to-client streaming
TypedSignalR.Client.DevTools58Server-to-client streaminghttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#server-to-client-streamingIAsyncEnumerableTask>Task>CancellationToken 等の入力不要のパラメータはグレーアウト[EnumeratorCancellation]とセットReturn Type が以下の何れかならServer-to-client streaming
Return Type が以下の何れかならServer-to-client streamingTypedSignalR.Client.DevTools59Server-to-client streaminghttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#server-to-client-streamingIAsyncEnumerableTask>Task>CancellationToken 等の入力不要のパラメータはグレーアウト
Return Type が以下の何れかならServer-to-client streamingTypedSignalR.Client.DevTools60Server-to-client streaminghttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#server-to-client-streamingIAsyncEnumerableTask>Task>CancellationToken 等の入力不要のパラメータはグレーアウトストリームに流れてくる値はメソッド名 : OnNext, OnCompleted, OnErrorという形で表示される
TypedSignalR.Client.DevTools61JWT Authentificationhttps://github.com/nenoNaninu/TypedSignalR.Client.DevTools#jwt-authentification-support
TypedSignalR.Client.DevTools62JWT Authentification Hub に [Authorize] を付与https://github.com/nenoNaninu/TypedSignalR.Client.DevTools#jwt-authentification-support
TypedSignalR.Client.DevTools63JWT Authentification Hub に [Authorize] を付与Hub の method に[Authorize] を付与https://github.com/nenoNaninu/TypedSignalR.Client.DevTools#jwt-authentification-support
TypedSignalR.Client.DevTools64JWT Authentification Hub に [Authorize] を付与JWT 入力フィールドが自動で現われる Hub の method に[Authorize] を付与https://github.com/nenoNaninu/TypedSignalR.Client.DevTools#jwt-authentification-support
TypedSignalR.Client.DevToolsの仕組み65
TypedSignalR.Client.DevTools の仕組み66https://www.nuget.org/packages/TypedSignalR.Client.DevTools/#dependencies-body-tab依存関係をみてみましょう。
TypedSignalR.Client.DevTools の仕組み67https://www.nuget.org/packages/TypedSignalR.Client.DevTools/#dependencies-body-tab依存関係をみてみましょう。[Hub] / [Receiver]属性が含まれるパッケージ
TypedSignalR.Client.DevTools の仕組み68https://www.nuget.org/packages/TypedSignalR.Client.DevTools/#dependencies-body-tab依存関係をみてみましょう。[Hub] / [Receiver]属性が含まれるパッケージSignalR の Hub を解析してHub の仕様を表現する JSON (spec.json) を生成するための Source Generator
TypedSignalR.Client.DevTools の仕組み69https://www.nuget.org/packages/TypedSignalR.Client.DevTools/#dependencies-body-tab依存関係をみてみましょう。[Hub] / [Receiver]属性が含まれるパッケージSignalR の Hub を解析してHub の仕様を表現する JSON (spec.json) を生成するための Source Generatorコンパイル時に interface をガリガリ解析してJSON を作りアセンブリに埋め込む
TypedSignalR.Client.DevTools の仕組み70https://www.nuget.org/packages/TypedSignalR.Client.DevTools/#dependencies-body-tab依存関係をみてみましょう。[Hub] / [Receiver]属性が含まれるパッケージSignalR の Hub を解析してHub の仕様を表現する JSON (spec.json) を生成するための Source Generatorコンパイル時に interface をガリガリ解析してJSON を作りアセンブリに埋め込む1. app.MapHub() を見つける2. T が実装している Hub /Hub の型引数で渡されるReceiver の interface を見つけ3. それらの interface で定義されているメソッドを解析する
TypedSignalR.Client.DevTools の仕組み71https://www.nuget.org/packages/TypedSignalR.Client.DevTools/#dependencies-body-tab依存関係をみてみましょう。[Hub] / [Receiver]属性が含まれるパッケージSignalR の Hub を解析してHub の仕様を表現する JSON (spec.json) を生成するための Source Generatorspec.json を元にGUI を構築するReact アプリ(Next.js 製)が埋め込まれているコンパイル時に interface をガリガリ解析してJSON を作りアセンブリに埋め込む1. app.MapHub() を見つける2. T が実装している Hub /Hub の型引数で渡されるReceiver の interface を見つけ3. それらの interface で定義されているメソッドを解析する
TypedSignalR.Client.DevTools の仕組み72https://www.nuget.org/packages/TypedSignalR.Client.DevTools/#dependencies-body-tab依存関係をみてみましょう。[Hub] / [Receiver]属性が含まれるパッケージSignalR の Hub を解析してHub の仕様を表現する JSON (spec.json) を生成するための Source Generatorspec.json を元にGUI を構築するReact アプリ(Next.js 製)が埋め込まれている/signalr-dev を叩いたらこれが読みだされるコンパイル時に interface をガリガリ解析してJSON を作りアセンブリに埋め込む1. app.MapHub() を見つける2. T が実装している Hub /Hub の型引数で渡されるReceiver の interface を見つけ3. それらの interface で定義されているメソッドを解析する
TypedSignalR.Client.DevTools の仕組み73https://github.com/nenoNaninu/TypedSignalR.Client.DevToolsミドルウェアをもう一度みてみると…
TypedSignalR.Client.DevTools の仕組み74https://github.com/nenoNaninu/TypedSignalR.Client.DevToolsミドルウェアをもう一度みてみると…/signalr-dev/spec.json でSource Generator 生成したSignalR の Hub の仕様を表現するJSON を返すようにパイプラインを構築
TypedSignalR.Client.DevTools の仕組み75https://github.com/nenoNaninu/TypedSignalR.Client.DevToolsミドルウェアをもう一度みてみると…/signalr-dev でReact アプリが読みだされるようパイプラインを構築/signalr-dev/spec.json でSource Generator 生成したSignalR の Hub の仕様を表現するJSON を返すようにパイプラインを構築
TypedSignalR.Clientシリーズ76
TypedSignalR.Client.DevTools の名前の由来77https://github.com/nenoNaninu/TypedSignalR.Client.DevToolsTypedSignalR.Client.DevTools
TypedSignalR.Client.DevTools の名前の由来78https://github.com/nenoNaninu/TypedSignalR.Client.DevToolsTypedSignalR.Client.DevTools
TypedSignalR.Client.DevTools の名前の由来79https://github.com/nenoNaninu/TypedSignalR.Client.DevToolsTypedSignalR.Client.DevTools型付けされた SignalR Client
TypedSignalR.Client.DevTools の名前の由来80https://github.com/nenoNaninu/TypedSignalR.Client.DevToolsTypedSignalR.Client.DevTools型付けされた SignalR Client今までの話に型付けとかなにもないじゃん
TypedSignalR.Client.DevTools の名前の由来81https://github.com/nenoNaninu/TypedSignalR.Client.DevToolsTypedSignalR.Client.DevTools型付けされた SignalR Client今までの話に型付けとかなにもないじゃんTypedSignalR.Client シリーズの1つなのです…!
TypedSignalR.Client シリーズ82https://github.com/nenoNaninu/TypedSignalR.Client#related-work
• C# の SignalR Client を強く型付けするためのSource GeneratorTypedSignalR.Client シリーズ83https://github.com/nenoNaninu/TypedSignalR.Client#related-workTypedSignalR.Client
• C# の SignalR Client を強く型付けするためのSource GeneratorTypedSignalR.Client シリーズ84https://github.com/nenoNaninu/TypedSignalR.Client#related-workTypedSignalR.Client.TypeScriptTypedSignalR.Client• TypeScript の SignalRClient を強く型付けするためのライブラリ及び .NET Tool
• C# の SignalR Client を強く型付けするためのSource GeneratorTypedSignalR.Client シリーズ85https://github.com/nenoNaninu/TypedSignalR.Client#related-workTypedSignalR.Client.TypeScriptTypedSignalR.Client• TypeScript の SignalRClient を強く型付けするためのライブラリ及び .NET Tool型で悩む必要はもうありません!型で悩む必要はもうありません!
• C# の SignalR Client を強く型付けするためのSource GeneratorTypedSignalR.Client シリーズ86https://github.com/nenoNaninu/TypedSignalR.Client#related-workTypedSignalR.Client.TypeScriptTypedSignalR.ClientMessagePack Hub Protocol をTypeScript でも簡単に利用可能!• TypeScript の SignalRClient を強く型付けするためのライブラリ及び .NET Tool型で悩む必要はもうありません!型で悩む必要はもうありません!
• C# の SignalR Client を強く型付けするためのSource GeneratorTypedSignalR.Client シリーズ87https://github.com/nenoNaninu/TypedSignalR.Client#related-workTypedSignalR.Client.TypeScriptTypedSignalR.Client.DevToolsTypedSignalR.ClientMessagePack Hub Protocol をTypeScript でも簡単に利用可能!• TypeScript の SignalRClient を強く型付けするためのライブラリ及び .NET Tool型で悩む必要はもうありません!型で悩む必要はもうありません!• SignalR 版 SwaggerUI• 今回の登壇のテーマ
• C# の SignalR Client を強く型付けするためのSource GeneratorTypedSignalR.Client シリーズ88https://github.com/nenoNaninu/TypedSignalR.Client#related-workTypedSignalR.Client.TypeScriptTypedSignalR.Client.DevToolsTypedSignalR.ClientNew!• TypeScript の SignalRClient を強く型付けするためのライブラリ及び .NET Tool型で悩む必要はもうありません!型で悩む必要はもうありません!• SignalR 版 SwaggerUI• 今回の登壇のテーマMessagePack Hub Protocol をTypeScript でも簡単に利用可能!
TypedSignalR.Client シリーズ89SignalR 機能対応表TypedSignalR.ClientTypedSignalR.Client.TypeScriptTypedSignalR.Client.DevToolsClient-to-serverInvocation⭕️ ⭕️ ⭕️Server-to-clientInvocation (broadcast)⭕️ ⭕️ ⭕️Client-to-serverstreaming⭕️ ⭕️ ⭕️Server-to-clientstreaming⭕️ ⭕️ ⭕️Client results(.NET 7)⭕️ ⭕️https://github.com/nenoNaninu/TypedSignalR.Client#related-work
TypedSignalR.Client シリーズ90SignalR 機能対応表TypedSignalR.ClientTypedSignalR.Client.TypeScriptTypedSignalR.Client.DevToolsClient-to-serverInvocation⭕️ ⭕️ ⭕️Server-to-clientInvocation (broadcast)⭕️ ⭕️ ⭕️Client-to-serverstreaming⭕️ ⭕️ ⭕️Server-to-clientstreaming⭕️ ⭕️ ⭕️Client results(.NET 7)⭕️ ⭕️https://github.com/nenoNaninu/TypedSignalR.Client#related-work.NET 7 で新規追加された機能もしっかりサポート!
TypedSignalR.Client シリーズ91SignalR 機能対応表TypedSignalR.ClientTypedSignalR.Client.TypeScriptTypedSignalR.Client.DevToolsClient-to-serverInvocation⭕️ ⭕️ ⭕️Server-to-clientInvocation (broadcast)⭕️ ⭕️ ⭕️Client-to-serverstreaming⭕️ ⭕️ ⭕️Server-to-clientstreaming⭕️ ⭕️ ⭕️Client results(.NET 7)⭕️ ⭕️もう暫くお待ちください…!https://github.com/nenoNaninu/TypedSignalR.Client#related-work.NET 7 で新規追加された機能もしっかりサポート!
まとめ92• 導入方法• ミドルウェア追加• Hub と Receiver の interface に 属性をアノテーションするだけ!• 他の TypedSignalR.Client シリーズも使って強く型付けされた快適なコーディングライフを送ろう!TypedSignalR.Client.DevTools を使って快適にSignalR を活用したアプリケーションを開発しよう!あとは SwaggerUI みたいにGUI ぽちぽちして実行!快適デバッグ!