C# WebRTC(對於開發者的運行原理)
WebRTC 是 Web Real-Time Communication(網路即時通訊)的縮寫,此技術可讓網頁瀏覽器與其他平台之間進行直接、即時的通訊,除了初始的連線設定之外,無須使用中間伺服器進行資料傳輸。它支援在對等體之間分享視訊、音訊和一般資料,使其成為開發即時通訊應用程式的強大工具。
本教學介紹如何使用 C# 建立 WebRTC 解決方案,著重於 .NET Core Framework,並深入介紹如何設定信令伺服器、瞭解 TURN 伺服器,以及如何將 WebRTC 整合至您的 IronPDF C# 應用程式。
設定您的環境。
若要開始以 C# 開發 WebRTC 應用程式,您需要設定開發環境。 這涉及安裝 .NET Core,它是 .NET 的跨平台版本,用於建立網站、服務和主控台應用程式。您可以從 Microsoft 的官方網站下載並安裝 .NET Core。安裝完成後,您可以使用 Visual Studio(一種常用的 C# 開發整合開發環境 (IDE))或您選擇的任何其他編輯器來編寫程式碼。
建立新的控制台應用程式
首先建立一個新的主控台應用程式專案。 開啟您的終端機或命令列介面,移至您計劃建立專案的目錄。 接下來,執行以下指令:
dotnet new console -n WebRTCSampledotnet new console -n WebRTCSample此指令會建立一個名為 WebRTCSample 的新目錄,其中包含一個簡單的 "Hello World" 主控台應用程式。 導覽到您的專案目錄,您就可以開始編寫您的 WebRTC 應用程式了。
瞭解 WebRTC 和信令
WebRTC 可實現即時通訊,但它需要一個機制來協調通訊和傳送控制訊息,這個過程稱為信令。 信令用於交換通訊會話的元資料,例如會話描述和建立連線的候選資訊。 C# 應用程式可透過任何訊息傳輸機制 (例如 WebSockets 或 REST API) 實作訊號傳送。
在 .NET Core 中實作信令伺服器
信令伺服器在建立直接的點對點連線之前,扮演中介的角色,在對等體之間交換訊息。 您可以使用 .NET Core 實作信令伺服器,方法是建立一個簡單的 Web 應用程式來處理 WebSocket 連線。
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
public class Startup
{
// Configures services for the web application.
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options => options.AddDefaultPolicy(
builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()));
services.AddSignalR();
}
// Configures the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<SignalingHub>("/signal");
});
}
}using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
public class Startup
{
// Configures services for the web application.
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options => options.AddDefaultPolicy(
builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()));
services.AddSignalR();
}
// Configures the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<SignalingHub>("/signal");
});
}
}Imports Microsoft.AspNetCore.Builder
Imports Microsoft.AspNetCore.Hosting
Imports Microsoft.Extensions.DependencyInjection
Imports Microsoft.Extensions.Hosting
Public Class Startup
' Configures services for the web application.
Public Sub ConfigureServices(ByVal services As IServiceCollection)
services.AddCors(Function(options) options.AddDefaultPolicy(Function(builder) builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()))
services.AddSignalR()
End Sub
' Configures the HTTP request pipeline.
Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
If env.IsDevelopment() Then
app.UseDeveloperExceptionPage()
End If
app.UseCors()
app.UseRouting()
app.UseEndpoints(Sub(endpoints)
endpoints.MapHub(Of SignalingHub)("/signal")
End Sub)
End Sub
End Class本代碼片段使用 SignalR 設定了一個基本的 .NET Core 應用程式,SignalR 是一個用於在應用程式中加入即時網路功能的函式庫。SignalR 簡化了在應用程式中加入即時網頁功能的過程,因此是我們信令伺服器的最佳選擇。
使用 WebRTC 連接對等網路。
設定信令伺服器後,下一步就是使用 WebRTC 在用戶端之間建立點對點連線。 這包括在每個用戶端建立 RTCPeerConnection 物件、交換要約和回答訊息,以及協商連線細節。
建立對等連接
在 C# 應用程式中,您將主要管理信令部分,並可能透過瀏覽器或其他平台 (例如行動應用程式的 React Native) 與 WebRTC API 互動。以下是如何從網頁用戶端啟動對等連接的範例:
// Create a new RTCPeerConnection instance
const peerConnection = new RTCPeerConnection();
// Listen for ICE candidates and send them to the signaling server
peerConnection.onicecandidate = event => {
if (event.candidate) {
sendMessage('new-ice-candidate', event.candidate);
}
};
// Handle incoming media streams
peerConnection.ontrack = event => {
// Display the video or audio stream
};// Create a new RTCPeerConnection instance
const peerConnection = new RTCPeerConnection();
// Listen for ICE candidates and send them to the signaling server
peerConnection.onicecandidate = event => {
if (event.candidate) {
sendMessage('new-ice-candidate', event.candidate);
}
};
// Handle incoming media streams
peerConnection.ontrack = event => {
// Display the video or audio stream
};此 JavaScript 程式碼片段示範建立新的對等連線、處理 ICE 候選人,以及設定回呼以顯示傳入的媒體串流。
交換要約與答覆
為了建立連線,其中一個對等方會建立一個要約,而另一個對等方則會回應一個答案。 這些都是透過先前實作的信令伺服器進行交換。
// Create an offer for the peer connection
async function createOffer() {
const offer = await peerConnection.createOffer();
await peerConnection.setLocalDescription(offer);
sendMessage('offer', offer);
}
// Create an answer after receiving an offer
async function createAnswer(offer) {
await peerConnection.setRemoteDescription(new RTCSessionDescription(offer));
const answer = await peerConnection.createAnswer();
await peerConnection.setLocalDescription(answer);
sendMessage('answer', answer);
}// Create an offer for the peer connection
async function createOffer() {
const offer = await peerConnection.createOffer();
await peerConnection.setLocalDescription(offer);
sendMessage('offer', offer);
}
// Create an answer after receiving an offer
async function createAnswer(offer) {
await peerConnection.setRemoteDescription(new RTCSessionDescription(offer));
const answer = await peerConnection.createAnswer();
await peerConnection.setLocalDescription(answer);
sendMessage('answer', answer);
}將 WebRTC 整合到 .NET 應用程式中。
雖然 WebRTC 的核心實作通常是在瀏覽器或其他用戶端環境中處理,但 .NET 應用程式可以促進訊號傳送過程、管理會話控制,以及與其他服務 (例如用於穿越 NAT 的 TURN 伺服器) 進行互動。 對於桌面端或伺服器端應用程式,像 Pion WebRTC (Go 的開放源碼函式庫) 之類的函式庫可以包裝或與 C# 結合使用,以處理 WebRTC 流量。
執行您的應用程式
若要執行您的 .NET Core 應用程式,請在您的終端導覽到專案目錄,然後執行:
dotnet rundotnet run此指令會編譯並執行您的應用程式,啟動您所實作的信令伺服器。 您的網路用戶端現在可以連接到此伺服器,開始交換信令訊息。
IronPDF 簡介

IronPDF 是一個多功能的函式庫,可為 .NET 應用程式帶來 PDF 的產生與操作功能,讓開發人員能以程式化的方式建立、讀取與編輯 PDF 文件。 IronPDF 支援一系列工作,包括從 HTML 產生 PDF、填寫表單、抽取文字以及保護文件。 這使得它在根據使用者資料或應用程式輸出來產生報告、發票和動態文件時,具有難以置信的實用性。
IronPDF 的一個主要功能是其 HTML to PDF 功能,可保持您的版面設計和樣式不變。 它可從網頁內容產生 PDF,非常適合報告、發票和文件。 您可以輕鬆地將 HTML 檔案、URL 和 HTML 字串轉換為 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");
}
}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安裝 IronPDF。
在您的專案中使用 IronPDF 之前,您需要將其加入您的 .NET 應用程式中。 這可以使用 NuGet Package Manager 來完成,它可以簡化專案中外部函式庫的管理流程。 要安裝 IronPDF,您可以在 NuGet Package Manager Console 中使用以下指令:
Install-Package IronPdf
使用個案:使用 IronPDF 在 WebRTC 應用程式中產生會議記錄 PDF。
想像一下使用 WebRTC 開發一個即時通訊應用程式,設計用於線上會議或虛擬教室。 此應用程式可讓使用者進行音訊與視訊通話、分享螢幕,並即時協作處理文件。此應用程式的一項重要功能是能夠以 PDF 格式自動產生並發佈會議記錄或會議摘要,包括討論的重點、所做的決定和行動項目。 這就是 IronPdf 發揮作用的地方。
實施步驟
1.擷取會議內容:在整個 WebRTC 會話中,會擷取基於文字的內容,例如聊天訊息、共用筆記或突出顯示的行動項目。 此內容可以 HTML 格式編排,以便於造型和組織(例如,使用清單來表示動作項目,使用標題來表示關鍵主題)。 2.產生 HTML 模板:會話結束時,擷取的內容會格式化為 HTML 模板。 此範本包括會議的標題、日期、與會者,以及不同類型內容(討論重點、決定、行動項目)的結構性部分。 3.將 HTML 轉換為 PDF:會議結束並準備好 HTML 模板後,便可使用 IronPDF 將這些 HTML 內容轉換成 PDF 文件。 此轉換可確保在 PDF 中保留 HTML 中定義的樣式與排版,使文件易於閱讀且外觀專業。
以下是 PDF 程式碼範例:
using IronPdf;
public class MeetingMinutesGenerator
{
public static void GenerateMeetingMinutesPdf(string htmlContent, string outputPath)
{
// Initialize the HTML to PDF converter
var renderer = new HtmlToPdf();
renderer.PrintOptions.MarginTop = 40;
renderer.PrintOptions.MarginBottom = 40;
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 12
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 12
};
// Convert the HTML content to a PDF document
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF document
pdfDocument.SaveAs(outputPath);
Console.WriteLine("Meeting minutes PDF generated.");
}
}using IronPdf;
public class MeetingMinutesGenerator
{
public static void GenerateMeetingMinutesPdf(string htmlContent, string outputPath)
{
// Initialize the HTML to PDF converter
var renderer = new HtmlToPdf();
renderer.PrintOptions.MarginTop = 40;
renderer.PrintOptions.MarginBottom = 40;
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 12
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 12
};
// Convert the HTML content to a PDF document
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF document
pdfDocument.SaveAs(outputPath);
Console.WriteLine("Meeting minutes PDF generated.");
}
}Imports IronPdf
Public Class MeetingMinutesGenerator
Public Shared Sub GenerateMeetingMinutesPdf(ByVal htmlContent As String, ByVal outputPath As String)
' Initialize the HTML to PDF converter
Dim renderer = New HtmlToPdf()
renderer.PrintOptions.MarginTop = 40
renderer.PrintOptions.MarginBottom = 40
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 12
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 12
}
' Convert the HTML content to a PDF document
Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
' Save the PDF document
pdfDocument.SaveAs(outputPath)
Console.WriteLine("Meeting minutes PDF generated.")
End Sub
End Class結論
。
在本文中,我們探討了如何使用 C# 和 .NET Core 建立基本的 WebRTC 應用程式。 我們涵蓋了設定開發環境、建立新的主控台應用程式、實作訊號伺服器,以及啟動對等連線以進行即時通訊。 WebRTC 為即時通訊應用程式開啟了無數可能性,透過 C# 和 .NET Core,您可以建立跨不同平台和裝置的強大、可擴充的解決方案。 有關授權與購買資訊,請造訪 IronPDF 授權頁面。 一旦您決定購買,授權就會從 $799 開始。
常見問題解答
使用 C# 和 .NET Core 的 WebRTC 有哪些優點?
WebRTC 結合 C# 和 .NET Core 可讓開發人員建立即時通訊應用程式,充分利用 WebRTC 和 C# 程式設計環境的強大功能。這種組合支援直接點對點資料傳輸,並可與 IronPDF 等 .NET 函式庫整合,以獲得更多功能。
如何設定 C# 語言的 WebRTC 開發環境?
若要設定 C# 語言的 WebRTC 開發環境,您需要從 Microsoft 官方網站安裝 .NET Core SDK。使用 Visual Studio 等 IDE 來有效地管理和編寫程式碼。此設定可讓您建立主控台應用程式並整合 WebRTC 功能。
信令伺服器在 WebRTC 應用程式中扮演什麼角色?
信令伺服器在 WebRTC 應用程式中非常重要,因為它有助於對等體之間交換控制訊息和元資料以建立連線。它有助於在建立直接對等連接之前協商會話描述和候選人資訊。
如何使用 .NET Core 建立信令伺服器?
您可以使用 .NET Core 建立信令伺服器,方法是開發一個管理 WebSocket 連線的簡單網頁應用程式。利用 SignalR(一個增加即時網路功能的程式庫)可以簡化實作信令伺服器的流程。
IronPDF 如何用於在 WebRTC 應用程式中產生 PDF?
IronPDF 可以整合到 WebRTC 應用程式中,從 HTML 內容產生 PDF。這對於建立會議記錄或會議摘要等文件特別有用,可增強即時通訊應用程式的功能。
在 WebRTC 中建立對等連線涉及哪些步驟?
在 WebRTC 中建立點對點連線涉及建立 RTCPeerConnection 物件、交換要約和回答訊息,以及使用 ICE 候選人協商連線細節。此流程對於允許點對點之間的直接通訊非常重要。
TURN 伺服器如何促進 WebRTC 連線?
TURN 伺服器可在無法直接連線(尤其是在限制性網路環境中)時,透過在對等體之間轉播媒體,協助啟用 WebRTC 連線。即使在需要穿越 NAT 的情況下,也能確保連線。
HTML 可以在 .NET 應用程式中轉換為 PDF 嗎?
是的,在 .NET 應用程式中,可以使用 IronPDF 之類的函式庫將 HTML 轉換為 PDF。可以使用 RenderHtmlAsPdf 等方法將 HTML 內容轉換成 PDF 文件,同時保持原始的樣式和排版。







