C# WebRTC (Geliştiriciler İçin Nasıl Çalışır)
WebRTC Web Gerçek Zamanlı İletişim anlamına gelir, web tarayıcıları ve diğer platformlar arasında veri aktarımı için aradaki sunucular olmadan doğrudan, gerçek zamanlı iletişimi olası kılan bir teknolojidir. Başlangıçta bağlantı kurulumu dışında arası sunuculara gerek olmaz. Video, ses ve genel verilerin akranlar arasında paylaşılmasını destekler, bu da gerçek zamanlı iletişim uygulamaları geliştirmek için güçlü bir araç haline getirir.
Bu eğitim, .NET Core çerçevesine odaklanarak, C# kullanarak bir WebRTC çözümü oluşturmayı tanıtır ve bir sinyal sunucusu kurma, TURN sunucularını anlama ve WebRTC'yi IronPDF C# uygulamalarınıza entegre etme konularına dair fikir verir.
Çevrenizi Kurma
C#'ta bir WebRTC uygulaması geliştirmeye başlamak için, geliştirme ortamınızı kurmanız gerekir. Bu, web siteleri, hizmetler ve konsol uygulamaları oluşturmak için platformlar arası bir .NET sürümü olan .NET Core'un kurulumunu içerir. Microsoft'un resmi web sitesinden .NET Core'u indirip kurabilirsiniz. Kurulumun ardından, C# geliştirmesi için popüler bir entegre geliştirme ortamı (IDE) olan Visual Studio veya kodunuzu yazmak için tercih ettiğiniz başka bir editörü kullanabilirsiniz.
Yeni Bir Konsol Uygulaması Oluşturma
Yeni bir konsol uygulaması projesi kurarak başlayın. Terminalinizi veya komut satırı arayüzünüzü açın ve projenizi oluşturmayı planladığınız dizine gidin. Ardından, aşağıdaki komutu çalıştırın:
dotnet new console -n WebRTCSample
dotnet new console -n WebRTCSample
Bu komut, basit bir "Hello World" konsol uygulaması ile WebRTCSample adlı yeni bir dizin oluşturur. Proje dizininize gidin ve WebRTC uygulamanızı kodlamaya başlamaya hazırsınız.
WebRTC ve Sinyal Anlaşılması
WebRTC gerçek zamanlı iletişim sağlar, ancak iletişimi koordine etmek ve kontrol mesajları göndermek için bir mekanizma gerektirir, bu işlem sinyal verme olarak bilinir. Sinyalleşme, bir bağlantı kurma için oturum açıklamaları ve aday bilgileri gibi iletişim oturumu hakkında meta verilerin değiştirilmesi için kullanılır. C# uygulamaları, WebSockets veya REST API'leri gibi herhangi bir mesaj iletim mekanizması üzerinden sinyalleşmeyi uygulayabilir.
.NET Core'da Bir Sinyal Sunucusu Uygulama
Bir sinyal sunucusu, doğrudan akranlar arası bağlantı kurulmadan önce akranlar arasında mesaj alışverişi yapmak için aracı görevi görür. .NET Core kullanarak, WebSocket bağlantılarını ele alan basit bir web uygulaması oluşturarak bir sinyal sunucusu uygulayabilirsiniz.
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
Bu kod parçacığı, uygulamalara gerçek zamanlı web işlevsellikleri eklemek için bir kütüphane olan SignalR ile temel bir .NET Core uygulaması kurar. SignalR, uygulamalara gerçek zamanlı web işlevselliği ekleme sürecini basitleştirir, bu da sinyal sunucumuz için iyi bir tercih yapar.
Akranları WebRTC ile Bağlama
Sinyal sunucusunu kurduktan sonra, sıradaki adım, WebRTC kullanarak istemciler arasında bir akranlar arası bağlantı kurmaktır. Bu, her istemcide RTCPeerConnection nesneleri oluşturmayı, teklif ve yanıt mesajlarını değiştirmeyi ve bağlantı ayrıntılarını müzakere etmeyi içerir.
Akran Bağlantısını Oluşturma
C# uygulamanızda, esasen sinyalleşme kısmını yönetir ve muhtemelen WebRTC API'leri ile bir tarayıcı veya React Native gibi mobil uygulamalar için diğer platformlar aracılığıyla etkileşimde bulunursunuz. Aşağıda, bir web istemcisinden bir akran bağlantısını başlatmanın bir örneği bulunmaktadır:
// 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
};
Bu JavaScript kod parçacığı, yeni bir akran bağlantısı oluşturmayı, ICE adaylarını yönetmeyi ve gelen medya akışlarını göstermek için bir geri arama ayarlamayı gösterir.
Teklif ve Yanıt Alışverişi
Bir bağlantı kurmak için, bir akran bir teklif oluşturur ve diğeri yanıt verir. Bunlar, daha önce uygulanmış olan sinyal sunucusu aracılığıyla değiştirilir.
// 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'yi .NET Uygulamalarına Entegre Etme
Çekirdek WebRTC uygulaması genellikle tarayıcıda veya diğer istemci tarafı ortamlarında ele alınırken, .NET uygulamaları sinyalleşme sürecini kolaylaştırabilir, oturum kontrolünü yönetebilir ve NAT geçişi için TURN sunucuları gibi diğer hizmetlerle etkileşime girebilir. Masaüstü veya sunucu tarafı uygulamalar için, Pion WebRTC (Go için açık kaynak bir kütüphane) gibi kütüphaneler C# ile işbirliği içinde kullanılabilir veya WebRTC trafiğini ele almak için sarılabilir.
Uygulamanızı Çalıştırma
.NET Core uygulamanızı çalıştırmak için, terminalinizde proje dizinine gidin ve şu komutu execute edin:
dotnet run
dotnet run
Bu komut, uygulamanızı derler ve oluşturduğunuz sinyal sunucusunu başlatır. Artık web istemcileriniz bu sunucuya bağlanarak sinyal mesajlarını değiştirmeye başlayabilir.
IronPDF'ye Giriş

IronPDF, programatik olarak PDF belgeleri oluşturma, okuma ve düzenleme yeteneğini .NET uygulamalarınıza getiren çok yönlü bir kütüphanedir. IronPDF, HTML'den PDF oluşturma, formları doldurma, metin çıkarma ve belgeleri güvence altına alma dahil çeşitli görevleri destekler. Bu, kullanıcı verilerine veya uygulama çıktısına dayalı raporlar, faturalar ve dinamik belgeler oluşturmayı inanılmaz derecede faydalı hale getirir.
IronPDF'nin önemli bir özelliği, HTML'den PDF'ye dönüştürme yeteneğidir, bu da düzenlerinizi ve stillerinizi bozulmadan korur. Bu, web içeriğinden PDF'ler ürettiği için raporlar, faturalar ve dokümantasyon için mükemmeldir. HTML dosyalarını, URL'leri ve HTML dizgilerini kolayca PDF'ye dönüştürebilirsiniz.
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
Installing IronPDF
IronPDF'yi projenizde kullanmadan önce, onu .NET uygulamanıza eklemeniz gerekir. Bu, projelerinizde harici kütüphaneleri yönetme sürecini basitleştiren NuGet Paket Yöneticisi kullanılarak yapılabilir. IronPDF'yi yüklemek için, NuGet Paket Yöneticisi Konsolu'nda aşağıdaki komutu kullanabilirsiniz:
Install-Package IronPdf
Kullanım Durumu: IronPDF ile Bir WebRTC Uygulamasında Toplantı Notları PDF'i Oluşturma
Çevrimiçi toplantılar veya sanal sınıflar için tasarlanmış bir WebRTC uygulaması geliştirdiğinizi hayal edin. Bu uygulama, kullanıcıların sesli ve görüntülü görüşmelere katılımını sağlar, ekranlarını paylaşır ve belgeler üzerinde gerçek zamanlı olarak işbirliği yapar. Bu uygulamanın değerli bir özelliği, toplantı süresince tartışılan anahtar noktaları, alınan kararlar ve eylem maddeleri de dahil olmak üzere, oturumun bir özetini veya toplantı tutanaklarını otomatik olarak oluşturup dağıtabilme yeteneğidir. İşte burada IronPDF devreye giriyor.
Uygulama Adımları
- Toplantı İçeriğini Yakalayın: WebRTC oturumu süresince, sohbet mesajları, paylaşılan notlar veya öne çıkarılan eylem maddeleri gibi metin tabanlı içerikler yakalanır. Bu içerik HTML olarak biçimlendirilebilir ve bu, kolay stil verme ve örgütlenme (örneğin, eylem maddeleri için listeler veya ana konu başlıkları için başlıklar kullanarak) sağlar.
- HTML Şablonu Oluşturun: Oturum sonunda, yakalanan içerik bir HTML şablonuna biçimlendirilir. Bu şablon, toplantının başlığı, tarihi, katılımcıları ve farklı içerik türleri (tartışma noktaları, kararlar, eylem maddeleri) için yapılandırılmış bölümler tavında.
- HTML'yi PDF'ye Dönüştürün: Toplantı sona erdiğinde ve HTML şablonu hazırlandığında, bu HTML içeriğini bir PDF belgesine dönüştürmek için IronPDF kullanılır. Bu dönüşüm, HTML'de tanımlanan stil ve düzenlerin PDF'de korunmasını sağlar, böylece belge okunması kolay ve profesyonel bir görünüme sahip olur.
İşte bir örnek PDF kodu:
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
Sonuç

Bu makalede, C# ve .NET Core kullanarak temel bir WebRTC uygulaması oluşturmayı araştırdık. Geliştirme ortamını kurma, yeni bir konsol uygulaması oluşturma, sinyal sunucusu uygulama ve gerçek zamanlı iletişim için eş bağlantıları başlatma konularını ele aldık. WebRTC, gerçek zamanlı iletişim uygulamaları için birçok olasılık açar ve C# ve .NET Core ile farklı platformlar ve cihazlar genelinde sağlam, ölçeklenebilir çözümler oluşturabilirsiniz. Lisanslama ve satın alma bilgileri için IronPDF Lisanslama Sayfası'nı ziyaret edin. Satın almaya karar verdikten sonra, lisans $999 tarihinden itibaren başlar.
Sıkça Sorulan Sorular
C# ve .NET Core ile WebRTC kullanmanın faydaları nelerdir?
WebRTC'nin C# ve .NET Core ile birleştirilmesi, geliştiricilerin WebRTC ve C# programlama ortamının güç özelliklerinden yararlanarak gerçek zamanlı iletişim uygulamaları oluşturmasına olanak tanır. Bu kombinasyon, doğrudan peer-to-peer veri aktarımını destekler ve ilave işlevler için IronPDF gibi .NET kütüphaneleri ile entegre edilebilir.
C#'ta WebRTC için bir geliştirme ortamı nasıl kurabilirim?
C#'ta WebRTC için bir geliştirme ortamı kurmak üzere, Microsoft'un resmi web sitesinden .NET Core SDK'sını yüklemeniz gerekir. Kodunuzu verimli bir şekilde yönetmek ve yazmak için Visual Studio gibi bir IDE kullanın. Bu kurulum, konsol uygulamaları oluşturmanıza ve WebRTC işlevlerini entegre etmenize olanak sağlar.
WebRTC uygulamasında bir sinyal sunucu ne rol oynar?
Bir sinyal sunucu, WebRTC uygulamasında önemli bir rol oynar çünkü eşler arasında kontrol mesajlarını ve meta verilerini değiş tokuş etmelerini kolaylaştırır ve bir bağlantı kurabilmek için gereklidir. Doğrudan peer-to-peer bağlantısı sağlanmadan önce oturum açıklamalarının ve aday bilgilerin müzakere edilmesine yardımcı olur.
.NET Core kullanarak bir sinyal sunucuyu nasıl oluşturabilirim?
Bir sinyal sunucu, .NET Core kullanarak WebSocket bağlantılarını yöneten basit bir web uygulaması geliştirerek oluşturabilirsiniz. Gerçek zamanlı web işlevleri ekleyen SignalR kütüphanesini kullanmak, sinyal sunucu implementasyonunu kolaylaştırabilir.
WebRTC uygulamalarında IronPDF nasıl kullanılarak PDF'ler oluşturulabilir?
IronPDF, WebRTC uygulamalarına entegre edilerek HTML içerikten PDF'ler oluşturabilir. Bu, özellikle toplantı tutanakları veya oturum özetleri gibi belgeleri oluşturarak gerçek zamanlı iletişim uygulamalarının işlevselliğini artırır.
WebRTC'de peer-to-peer bağlantı kurmada hangi adımlar yer alır?
WebRTC'de peer-to-peer bağlantısı kurmak, RTCPeerConnection objeleri oluşturmak, teklif ve yanıt mesajlarını değiş tokuş etmek ve ICE adayları kullanarak bağlantı detaylarını müzakere etmek adımlarını içerir. Bu süreç, eşler arasında doğrudan iletişimin sağlanması için gereklidir.
TURN sunucuları WebRTC bağlantılarına nasıl kolaylık sağlar?
TURN sunucuları, doğrudan bağlanmanın mümkün olmadığı durumda medya akışını eşler arasında ileterek, özellikle kısıtlayıcı ağ ortamlarında WebRTC bağlantılarını sağlamaya yardımcı olur. NAT geçişi gerektiği durumlarda bile bağlantı sağlamayı garanti eder.
.NET uygulamalarında HTML PDF’ye dönüştürülebilir mi?
Evet, HTML, IronPDF gibi kütüphaneler kullanılarak .NET uygulamalarında PDF'ye dönüştürülebilir. RenderHtmlAsPdf gibi yöntemlerle HTML içeriğini, orijinal stil ve düzeni koruyarak PDF belgesine dönüştürebilirsiniz.




