.NETヘルプ Signalr C# (開発者向けの仕組み) Curtis Chau 更新日:7月 28, 2025 Download IronPDF NuGet Download テキストの検索と置換 テキストと画像のスタンプ Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article 現代のウェブはインタラクティブ性とリアルタイムフィードバックで成り立っています。 応答性のあるアプリケーションを構築する際には、リアルタイムのウェブ機能が必要です。ここでSignalRが活躍します。 ASP.NET Core SignalRは、あなたのアプリケーションにリアルタイムのウェブ機能を追加するのを考えているよりも簡単にするライブラリです。 このチュートリアルでは、SignalRの基本とニュアンスを学ぶ旅に出かけます。 では、始めましょう! ASP.NET CoreにおけるSignalRの紹介 ASP.NET Core SignalRは、WebSocketsやサーバーサイドイベントのような技術を使用してリアルタイムのウェブ機能を作成するためのAPIを提供します。 これはASP.NET Coreに限定されていません。 SignalRを使って、ブラウザやモバイルアプリのような様々なクライアントとも使用でき、接続されたクライアントがすぐに更新されることを保証します。 開発環境のセットアップ 始めるには、次が必要です: ASP.NET Core SDK Visual Studio SignalRハブの構築 本質的には、SignalRはSignalRハブを中心に回ります。これはクライアントとサーバーの相互作用の中心点です。 新しい ASP.NET Core プロジェクトを作成します。 新しいクラスを追加し、それをChatHubと名付けましょう。 これが私たちのSignalRハブとして機能します。 using Microsoft.AspNetCore.SignalR; using System.Threading.Tasks; // Define a SignalR Hub class named ChatHub public class ChatHub : Hub { // Asynchronous method to send messages public async Task SendMessage(string user, string message) { // Send a message to all connected clients await Clients.All.SendAsync("ReceiveMessage", user, message); } } using Microsoft.AspNetCore.SignalR; using System.Threading.Tasks; // Define a SignalR Hub class named ChatHub public class ChatHub : Hub { // Asynchronous method to send messages public async Task SendMessage(string user, string message) { // Send a message to all connected clients await Clients.All.SendAsync("ReceiveMessage", user, message); } } Imports Microsoft.AspNetCore.SignalR Imports System.Threading.Tasks ' Define a SignalR Hub class named ChatHub Public Class ChatHub Inherits Hub ' Asynchronous method to send messages Public Async Function SendMessage(ByVal user As String, ByVal message As String) As Task ' Send a message to all connected clients Await Clients.All.SendAsync("ReceiveMessage", user, message) End Function End Class $vbLabelText $csharpLabel Startupクラスでハブを統合しましょう。 public class Startup { // Configure services and add SignalR public void ConfigureServices(IServiceCollection services) { services.AddSignalR(); // Add SignalR services } // Configure the app to use SignalR and map the hub public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // Setup endpoint to route to ChatHub app.UseEndpoints(endpoints => { endpoints.MapHub<ChatHub>("/chatHub"); }); } } public class Startup { // Configure services and add SignalR public void ConfigureServices(IServiceCollection services) { services.AddSignalR(); // Add SignalR services } // Configure the app to use SignalR and map the hub public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // Setup endpoint to route to ChatHub app.UseEndpoints(endpoints => { endpoints.MapHub<ChatHub>("/chatHub"); }); } } Public Class Startup ' Configure services and add SignalR Public Sub ConfigureServices(ByVal services As IServiceCollection) services.AddSignalR() ' Add SignalR services End Sub ' Configure the app to use SignalR and map the hub Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment) ' Setup endpoint to route to ChatHub app.UseEndpoints(Sub(endpoints) endpoints.MapHub(Of ChatHub)("/chatHub") End Sub) End Sub End Class $vbLabelText $csharpLabel クライアントサイドの実装 SignalRは汎用性があります。このチュートリアルではASP.NET CoreとJavaScriptクライアントライブラリに焦点を当てていますが、SignalRは.NETからJavaまでの様々なクライアントをサポートしています。 SignalRクライアントライブラリの使用 SignalRクライアントライブラリは、クライアントサイドのコードがサーバーサイドと直接接続し、通信することを可能にします。例としてJavaScriptを使ってみましょう。 まず、SignalR JavaScriptクライアントライブラリを追加します。 <script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script> <script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script> HTML 次に、ハブに接続することができます。 // Create a connection to the SignalR hub const connection = new signalR.HubConnectionBuilder() .withUrl("/chatHub") // The hub URL .build(); // Start the connection connection.start().catch(err => console.error(err.toString())); // Setup a listener for receiving messages connection.on("ReceiveMessage", (user, message) => { console.log(`${user} says: ${message}`); }); // Create a connection to the SignalR hub const connection = new signalR.HubConnectionBuilder() .withUrl("/chatHub") // The hub URL .build(); // Start the connection connection.start().catch(err => console.error(err.toString())); // Setup a listener for receiving messages connection.on("ReceiveMessage", (user, message) => { console.log(`${user} says: ${message}`); }); JAVASCRIPT この単純なクライアントサイドコードは、ハブに接続し、ブロードキャストされたメッセージをリスンします。 アクション中のリアルタイム機能 メッセージの送信 先ほどのクライアントサイドとサーバーサイドのコードスニペットを使用して、メッセージの送信は簡単です。 サーバーとクライアントの両方が通信を開始できます。 サーバーサイドから: // Send a message from the server to all connected clients await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!"); // Send a message from the server to all connected clients await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!"); ' Send a message from the server to all connected clients Await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!") $vbLabelText $csharpLabel クライアントから: // Send a message from the client to the server connection.send("SendMessage", "Client", "Hello from client!") .catch(err => console.error(err.toString())); // Send a message from the client to the server connection.send("SendMessage", "Client", "Hello from client!") .catch(err => console.error(err.toString())); JAVASCRIPT 高度なリアルタイム通信 ASP.NET Core SignalRは高度なリアルタイム通信機能を提供します: 接続のグループ化:接続されたクライアントをグループに分け、特定のセグメントにメッセージをブロードキャストします。 切断の処理:クライアント接続および切断を自動的に管理します。 バイナリプロトコル:SignalRはデフォルトではテキストベースのプロトコルを使用しますが、バイナリプロトコルもサポートしています。 Azure SignalRサービスとのSignalR スケーラブルなリアルタイム機能のためには、Azure SignalRサービスを統合します。 この完全管理されたサービスは、同時に接続される大量の接続をサポートしており、高需要のアプリに最適です。 Azure SignalRサービスの統合: Azure SignalR SDKをインストールします。 バックプレーンサポートのためにAzure Service Busを使用します。 Startupクラスを調整してAzure SignalRを使用します。 public class Startup { public void ConfigureServices(IServiceCollection services) { // Add Azure SignalR services services.AddSignalR().AddAzureSignalR(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // Use Azure SignalR and map hub with routes app.UseAzureSignalR(routes => { routes.MapHub<ChatHub>("/chatHub"); }); } } public class Startup { public void ConfigureServices(IServiceCollection services) { // Add Azure SignalR services services.AddSignalR().AddAzureSignalR(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // Use Azure SignalR and map hub with routes app.UseAzureSignalR(routes => { routes.MapHub<ChatHub>("/chatHub"); }); } } Public Class Startup Public Sub ConfigureServices(ByVal services As IServiceCollection) ' Add Azure SignalR services services.AddSignalR().AddAzureSignalR() End Sub Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment) ' Use Azure SignalR and map hub with routes app.UseAzureSignalR(Sub(routes) routes.MapHub(Of ChatHub)("/chatHub") End Sub) End Sub End Class $vbLabelText $csharpLabel プレミアムな.NETツールでSignalRを強化するIron Suite ASP.NET Core SignalRは優れたリアルタイムウェブ機能の基盤を提供しますが、開発者はしばしば全体的な体験と機能を強化するためのツールを探します。 そこでIron Softwareのライブラリスイートが登場します。 Iron Suiteは、SignalRを利用するASP.NET Coreアプリケーションを強化するために設計されたプレミアムな.NETライブラリのスイートです。 このスイートの各製品は独自の機能を提供し、より豊かなアプリケーション体験を保証します。 提供内容を詳しく見てみましょう: IronPDF IronPDFの機能について詳しく学ぶことにより、.NETアプリケーション内でPDFファイルを生成、編集、および読み取ることができます。 チームがリアルタイムでドキュメントを共同作成するシナリオでSignalRを統合することを想像してください。変更が行われると、ドキュメントが即座に更新されたすべての接続されたクライアントにプッシュされ、飛躍的にPDFに変換されます。 SignalRのリアルタイム機能とIronPDFの能力が組み合わさることで、コラボレーションツールが革新される可能性があります。 IronPDFはHTML、URL、およびフルウェブページをオリジナルのように美しいPDFに変換します。 オンラインレポート、請求書、または保存したいウェブベースの情報を保存するのに最適です。HTMLからPDF変換を希望していますか? IronPDFを今日試してください! using IronPdf; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); // 1. Convert HTML String to PDF var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"; var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent); pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf"); // 2. Convert HTML File to PDF var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath); pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf"); // 3. Convert URL to PDF var url = "http://ironpdf.com"; // Specify the URL var pdfFromUrl = renderer.RenderUrlAsPdf(url); pdfFromUrl.SaveAs("URLToPDF.pdf"); } } using IronPdf; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); // 1. Convert HTML String to PDF var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"; var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent); pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf"); // 2. Convert HTML File to PDF var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath); pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf"); // 3. Convert URL to PDF var url = "http://ironpdf.com"; // Specify the URL var pdfFromUrl = renderer.RenderUrlAsPdf(url); pdfFromUrl.SaveAs("URLToPDF.pdf"); } } Imports IronPdf Friend Class Program Shared Sub Main(ByVal args() As String) Dim renderer = New ChromePdfRenderer() ' 1. Convert HTML String to PDF Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>" Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent) pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf") ' 2. Convert HTML File to PDF Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath) pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf") ' 3. Convert URL to PDF Dim url = "http://ironpdf.com" ' Specify the URL Dim pdfFromUrl = renderer.RenderUrlAsPdf(url) pdfFromUrl.SaveAs("URLToPDF.pdf") End Sub End Class $vbLabelText $csharpLabel IronXL Excelスプレッドシートの操作に関しては、IronXLの機能を探索するが最適です。 ビジネスシーンでは、スプレッドシートは重要な役割を果たします。 SignalRとIronXLを組み合わせることで、経理チームがリアルタイムで予算表に取り組み、その変化を目の当たりにすることができるようになります。 様々な部門からのデータがリアルタイムで更新され、すべての関係者に提示される、集中化されたExcelシートに流れ込むシナリオを想像してください。 リアルタイムコミュニケーションと動的スプレッドシート管理の融合は、この組み合わせで実現します。 IronOCR 光学文字認識(OCR)は、現代のアプリケーションで不可欠です。 IronOCRをアクションで見ることで、.NET開発者が画像やドキュメントからテキストを抽出できることがわかります。 SignalRのリアルタイム機能と組み合わせることで、画期的な存在になるでしょう。 ユーザーがテキストデータを含む画像をアップロードするプラットフォームを考えてみてください。 IronOCRが画像を処理したらすぐにユーザーにリアルタイムで通知するためにSignalRが使われ、データ抽出がインタラクティブで即座に行われます。 IronBarcode バーコーディングは、在庫管理、発券システムなどにおいて不可欠です。 IronBarcodeの機能を発見することで、バーコードの作成と読み取りを簡単にします。 次に、これを会社の経理管理システムでSignalRと統合することを考えてみましょう。 物品がスキャンされると、在庫がリアルタイムで更新され、接続されたクライアントに在庫レベルが通知され、スムーズな物流運営が保証されます。 結論 ASP.NET Core SignalRとIron Suiteの強力なツールが融合することで、開発者とエンドユーザーの両方にとって向上した体験が約束されています。 リアルタイムのウェブ機能は通信だけではなく、適切なリソースであるIron Suiteと組み合わさることで、インタラクティブなアプリケーションを再定義する変革ツールになります。 Iron Suiteが提供する価値提案には注目するに値します。各製品ライセンスは$799から始まり、開発者にプレミアムな機能セットを提供します。 ですが、すぐに決めることが不安な場合は、各製品がIron Softwareプロダクトの無料トライアルを寛大に提供しています。 これにより、決定前に機能を試すことができます。 そして、複数のツールを統合することを考えている場合は、素晴らしいニュースがあります:Iron Suite全体を購入することで、わずか二つの製品の値段で追加の価値が得られます! これは、コストパフォーマンスを最大限に活用するだけでなく、ASP.NET Core SignalRアプリケーションを革新するための包括的なツールキットを手に入れることも保証されています。 よくある質問 SignalRとは何で、どのようにウェブアプリケーションを強化するのですか? SignalRはASP.NET Coreのライブラリで、リアルタイムのウェブ機能をアプリケーションに追加し、サーバーとクライアントの瞬時の通信を可能にします。これにより、リアルタイム更新やフィードバックを許すことで、インタラクティブで応答性の高いウェブアプリケーションが実現します。 C#アプリケーションでSignalRをセットアップするにはどうすればよいですか? C#アプリケーションでSignalRをセットアップするためには、ASP.NET Core SDKをインストールし、開発にはVisual Studioを使用します。StartupクラスにSignalRサービスを追加し、ハブをエンドポイントにマッピングすることで、サーバークライアント間の通信を確立します。 リアルタイム通信におけるSignalR Hubの役割は何ですか? SignalR Hubは、サーバーと接続されたクライアント間の通信を促進する中心的なコンポーネントとして機能します。リアルタイムでのメッセージ送受信を可能にし、SignalRの機能の主要な部分となります。 SignalRでリアルタイムメッセージングをどのように処理できますか? SignalRでのリアルタイムメッセージングは、サーバーサイドのハブとクライアントサイドのスクリプトを作成することで管理できます。クライアントサイドのJavaScriptはハブへの接続を確立し、connection.onやconnection.sendのようなメソッドでメッセージを送受信します。 SignalRの高度な機能にはどのようなものがありますか? SignalRは、通信をセグメント化するための接続のグループ化、クライアントの切断を優雅に処理する機能、リアルタイム通信能力を強化するためのバイナリプロトコルのサポートなどの高度な機能を提供します。 Azure SignalR Serviceはアプリケーションのスケーリングにどのように役立ちますか? Azure SignalR Serviceは、多数の同時接続をサポートすることでアプリケーションをスケーリングすることを可能にします。Azure SignalR SDKをインストールし、スタートアップクラスを構成して、スケーラブルなリアルタイム通信のためにAzureのインフラを活用します。 SignalRアプリケーションでPDFを生成するためにIronPDFをどのように使用できますか? SignalRアプリケーションでPDFドキュメントを生成するためにIronPDFを使用できます。IronPDFのRenderHtmlAsPdfメソッドを用いてHTMLコンテンツをPDFに変換し、SignalRのリアルタイム更新とシームレスに統合できます。 IronXLがSignalRアプリケーションにもたらす利点は何ですか? IronXLはSignalRアプリケーションをExcelファイルの操作により強化します。アプリケーション内でExcelドキュメントの作成、読み込み、修正を可能にし、リアルタイム機能と共にさらなるデータ処理能力を提供します。 IronOCRをSignalRアプリケーションに統合してテキスト認識を行うことはできますか? はい、IronOCRはSignalRアプリケーションに統合して光学式文字認識(OCR)を実行することができます。これにより、リアルタイムで画像からテキストを抽出し、動的なテキスト認識能力を持つアプリケーションを強化します。 SignalRアプリケーションでIronBarcodeを使用する可能性は何ですか? IronBarcodeはSignalRアプリケーションでバーコードの生成とリアルタイムの読み取りに使用できます。この機能は、動的なバーコード処理とリアルタイムデータのハンドリングを要求するアプリケーションにとって有益です。 Curtis Chau 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 更新日 9月 4, 2025 RandomNumberGenerator C# RandomNumberGenerator C#クラスを使用すると、PDF生成および編集プロジェクトを次のレベルに引き上げることができます 詳しく読む 更新日 9月 4, 2025 C# String Equals(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む 更新日 8月 5, 2025 C# Switch Pattern Matching(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む C# True False (開発者向けの仕組み)C# SQLite (開発者向けの仕組み)
更新日 9月 4, 2025 RandomNumberGenerator C# RandomNumberGenerator C#クラスを使用すると、PDF生成および編集プロジェクトを次のレベルに引き上げることができます 詳しく読む
更新日 9月 4, 2025 C# String Equals(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む
更新日 8月 5, 2025 C# Switch Pattern Matching(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む