WebSocket Nedir?

WebSocket, internet üzerinde gerçek zamanlı veri akışı sağlamak için geliştirilmiş bir teknolojidir.

Veri akışı için standart HTTP protokolünden farklıdır. HTTP protokolü, sunucudan talep yapılıp yanıt alınmasını sağlar. Oysa WebSocket, sunucu ve taraf arasında sürekli bağlantı kurar ve her iki taraf da veri gönderebilir. Oluşturulan bağlantı, tarayıcı ve sunucu arasında sürekli açık kalır. Bu, verilerin anında iletilebilmesini ve gecikmelerin önlenebilmesini sağlar. Veri akışının sürekli ve hızlı olmasını garantiler ve gerçek zamanlı uygulamalar için ideal bir seçenektir. Bu nedenle gerçek zamanlı oyunlar, sohbet uygulamaları, finansal takip uygulamaları gibi uygulamalarda kullanılır.

Bu teknoloji, HTML5 standardının bir parçasıdır ve tarayıcılar tarafından desteklenir.  Güvenli bağlantılar sağlamak için SSL/TLS şifrelemesi kullanır. Ayrıca açık kaynak kodlu WebSocket kütüphaneleri, web geliştiricilerinin kolaylıkla kullanabileceği şekilde sunulur. Bunun yanı sıra, akıllı telefonlar ve masaüstü cihazlar için geliştirilen uygulamalarda da kullanılabilir. WebSocket, verilerin hızlı ve etkileşimli şekilde akışını sağlar ve geliştiriciler için esneklik sunar. Büyük veri miktarlarının iletimini ve işlenmesini de destekler. Bu, verilerin anlık olarak güncellenmesi ve kullanıcıların anında yanıt almasını sağlar. Geliştiriciler için esneklik sunar.

ASP.Net Core için buradan dokümantasyonu inceleyebilirsiniz.

Örnek C# Kodumuz.

using System;
using System.Net;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

class Program
{
static async Task Main(string[] args)
{
var server = new HttpListener();
server.Prefixes.Add("http://localhost:8080/");
server.Start();

while (true) {
var context = await server.GetContextAsync();
if (context.Request.IsWebSocketRequest) {
var socket = await context.AcceptWebSocketAsync(subProtocol: null);
var receiving = Task.Run(async (){
while (true) {
var buffer = new byte[1024];
var result = await socket.ReceiveAsync(new ArraySegment<byte(buffer),
CancellationToken.None);
Console.WriteLine(Encoding.UTF8.GetString(buffer, 0, result.Count));
var message = Encoding
.UTF8
.GetBytes("Message received:" + Encoding.UTF8.GetString(buffer, 0, result.Count));

await socket.SendAsync(new ArraySegment<byte>(message),
WebSocketMessageType.Text,
true,
CancellationToken.None);
}
});
}
}
}
}

Örnek HTML Sayfası

<html>
<head>
<script><br />
const socket = new WebSocket("http://localhost:8080");</p>
<p>socket.onopen = function(event) {<br />
socket.send("Hello Server!");<br />
};</p>
<p>socket.onmessage = function(event) {<br />
console.log("Message from server:", event.data);<br />
};</p>
<p>socket.onerror = function(error) {<br />
console.error("WebSocket error: ";, error);<br />
};</p>
<p>socket.onclose = function(event) {<br />
console.log("WebSocket closed with code: ", event.code);<br />
};<br />
</script>
</head>
</html>

Microsoft’un geliştirdiği SignalR yazımı buradan okuyabilirsiniz.

İyi okumalar.

Emrah Eroğlu

Microsoft Power Platform - Dynamics 365 CE Developer - Solutions Architect

You may also like...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir