Kurulum, uygulama, ölçeklendirme ve küresel uygulamalar için en iyi uygulamaları kapsayan Socket.IO kullanarak gerçek zamanlı veri akışını keşfedin.
Gerçek Zamanlı Veri Akışı: Bir Socket.IO Uygulama Rehberi
Günümüzün hızlı dijital ortamında, gerçek zamanlı veri akışı, anlık güncellemeler ve kesintisiz iletişim gerektiren uygulamalar için çok önemlidir. Canlı sohbet uygulamalarından gerçek zamanlı analiz panolarına kadar verileri anında iletme yeteneği, kullanıcı deneyimini geliştirir ve rekabet avantajı sağlar. Popüler bir JavaScript kütüphanesi olan Socket.IO, web istemcileri ve sunucuları arasındaki gerçek zamanlı iki yönlü iletişimin uygulanmasını kolaylaştırır. Bu kapsamlı rehber, temel kavramları, pratik örnekleri ve küresel uygulamalar için en iyi uygulamaları kapsayan Socket.IO kullanarak gerçek zamanlı veri akışını kurma ve uygulama sürecinde size yol gösterecektir.
Gerçek Zamanlı Veri Akışı Nedir?
Gerçek zamanlı veri akışı, önemli bir gecikme olmadan verilerin bir veri kaynağından bir hedefe sürekli ve anında iletilmesini içerir. İstemcilerin güncellemeleri tekrar tekrar istemesini gerektiren geleneksel istek-yanıt modellerinin aksine, gerçek zamanlı akış, sunucuların veriler hazır olur olmaz istemcilere göndermesine olanak tanır. Bu yaklaşım, aşağıdakiler gibi en güncel bilgilere ihtiyaç duyan uygulamalar için esastır:
- Canlı Sohbet Uygulamaları: Kullanıcılar anında mesaj gönderimi ve bildirimler bekler.
- Gerçek Zamanlı Analiz Panoları: İş zekası için güncel metrikleri ve eğilimleri görüntüleme.
- Çevrimiçi Oyunlar: Oyun durumlarını ve oyuncu eylemlerini gerçek zamanlı olarak senkronize etme.
- Finansal Ticaret Platformları: Anlık hisse senedi kotaları ve piyasa güncellemeleri sağlama.
- Nesnelerin İnterneti (IoT) Uygulamaları: Sensör verilerini izleme ve cihazları uzaktan kontrol etme.
- İşbirlikçi Düzenleme Araçları: Birden fazla kullanıcının belgeleri veya kodu aynı anda düzenlemesine izin verme.
Gerçek zamanlı veri akışının faydaları şunları içerir:
- Geliştirilmiş Kullanıcı Deneyimi: Anında güncellemeler sağlayarak ve gecikmeyi azaltarak.
- Artan Katılım: Kullanıcıları gerçek zamanlı bilgilerle bilgilendirilmiş ve ilgili tutarak.
- Gelişmiş Karar Alma: En güncel içgörülere dayalı veri odaklı kararlar almayı sağlayarak.
- Daha Fazla Verimlilik: Sürekli yoklama ihtiyacını azaltarak ve sunucu yükünü en aza indirerek.
Socket.IO'ya Giriş
Socket.IO, web istemcileri ve sunucuları arasında gerçek zamanlı, iki yönlü ve olay tabanlı iletişim sağlayan bir JavaScript kütüphanesidir. WebSockets gibi altta yatan taşıma protokollerinin karmaşıklıklarını soyutlar ve gerçek zamanlı uygulamalar oluşturmak için basit ve sezgisel bir API sunar. Socket.IO, istemci ve sunucu arasında kalıcı bir bağlantı kurarak çalışır ve her iki tarafın da gerçek zamanlı olarak veri gönderip almasına olanak tanır.
Socket.IO'nun temel özellikleri şunlardır:
- Gerçek Zamanlı İki Yönlü İletişim: Hem istemciden sunucuya hem de sunucudan istemciye iletişimi destekler.
- Olay Tabanlı API: Özel olaylar kullanarak veri alışverişini basitleştirir.
- Otomatik Yeniden Bağlantı: Bağlantı kesintilerini ele alır ve istemcileri otomatik olarak yeniden bağlar.
- Çoklama (Multiplexing): Tek bir bağlantı üzerinden birden fazla iletişim kanalı sağlar (Namespaces).
- Yayınlama (Broadcasting): Verileri aynı anda birden fazla istemciye göndermeyi sağlar (Rooms).
- Taşıma Geri Dönüşü (Transport Fallback): WebSockets kullanılamıyorsa diğer yöntemlere (uzun yoklama gibi) zarif bir şekilde düşer.
- Tarayıcılar Arası Uyumluluk: Çeşitli tarayıcılarda ve cihazlarda çalışır.
Bir Socket.IO Projesi Kurma
Socket.IO'ya başlamak için sisteminizde Node.js ve npm (Node Paket Yöneticisi) yüklü olmalıdır. Temel bir Socket.IO projesi kurmak için şu adımları izleyin:
1. Bir Proje Dizini Oluşturma
Projeniz için yeni bir dizin oluşturun ve içine gidin:
mkdir socketio-example
cd socketio-example
2. Bir Node.js Projesi Başlatma
npm kullanarak yeni bir Node.js projesi başlatın:
npm init -y
3. Socket.IO ve Express'i Yükleme
Socket.IO ve popüler bir Node.js web çerçevesi olan Express'i bağımlılık olarak yükleyin:
npm install socket.io express
4. Sunucu Taraflı Kod Oluşturma (index.js)
`index.js` adında bir dosya oluşturun ve aşağıdaki kodu ekleyin:
const express = require('express');
const http = require('http');
const { Server } = require("socket.io");
const app = express();
const server = http.createServer(app);
const io = new Server(server);
const port = 3000;
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
io.on('connection', (socket) => {
console.log('Bir kullanıcı bağlandı');
socket.on('disconnect', () => {
console.log('Kullanıcı bağlantısı kesildi');
});
socket.on('chat message', (msg) => {
io.emit('chat message', msg); // Mesajı tüm bağlı istemcilere yayınla
console.log('mesaj: ' + msg);
});
});
server.listen(port, () => {
console.log(`Sunucu ${port} portunda dinliyor`);
});
Bu kod, bir Express sunucusu kurar ve Socket.IO'yu entegre eder. Gelen bağlantıları dinler ve 'connection', 'disconnect' ve 'chat message' gibi olayları işler.
5. İstemci Taraflı Kod Oluşturma (index.html)
Aynı dizinde `index.html` adında bir dosya oluşturun ve aşağıdaki kodu ekleyin:
Socket.IO Sohbeti
Bu HTML dosyası, mesaj göndermek için bir giriş alanına ve alınan mesajları görüntülemek için bir listeye sahip temel bir sohbet arayüzü kurar. Ayrıca Socket.IO istemci kitaplığını ve mesaj gönderme ve alma işlemini ele alan JavaScript kodunu içerir.
6. Uygulamayı Çalıştırma
Terminalinizde aşağıdaki komutu çalıştırarak Node.js sunucusunu başlatın:
node index.js
Web tarayıcınızı açın ve `http://localhost:3000` adresine gidin. Sohbet arayüzünü görmelisiniz. Birden fazla kullanıcıyı simüle etmek için birden fazla tarayıcı penceresi veya sekmesi açın. Bir pencerede bir mesaj yazın ve Enter tuşuna basın; mesajın tüm açık pencerelerde gerçek zamanlı olarak göründüğünü görmelisiniz.
Socket.IO'nun Temel Kavramları
Sağlam ve ölçeklenebilir gerçek zamanlı uygulamalar oluşturmak için Socket.IO'nun temel kavramlarını anlamak esastır.
1. Bağlantılar
Bir bağlantı, bir istemci ile sunucu arasında kalıcı bir bağlantıyı temsil eder. Bir istemci Socket.IO kullanarak sunucuya bağlandığında, hem istemci hem de sunucuda benzersiz bir soket nesnesi oluşturulur. Bu soket nesnesi birbirleriyle iletişim kurmak için kullanılır.
// Sunucu tarafı
io.on('connection', (socket) => {
console.log('Soket kimliği ile bir kullanıcı bağlandı: ' + socket.id);
socket.on('disconnect', () => {
console.log('Kullanıcı bağlantısı kesildi');
});
});
// İstemci tarafı
var socket = io();
2. Olaylar
Olaylar, istemciler ve sunucu arasında veri alışverişi için birincil mekanizmadır. Socket.IO olay tabanlı bir API kullanır ve özel olaylar tanımlamanıza ve bunları belirli eylemlerle ilişkilendirmenize olanak tanır. İstemciler sunucuya olaylar yayabilir ve sunucu istemcilere olaylar yayabilir.
// Sunucu tarafı
io.on('connection', (socket) => {
socket.on('custom event', (data) => {
console.log('Alınan veri:', data);
socket.emit('response event', { message: 'Veri alındı' });
});
});
// İstemci tarafı
socket.emit('custom event', { message: 'İstemciden merhaba' });
socket.on('response event', (data) => {
console.log('Alınan yanıt:', data);
});
3. Yayınlama (Broadcasting)
Yayınlama, verileri aynı anda birden fazla bağlı istemciye göndermenizi sağlar. Socket.IO, tüm bağlı istemcilere veri gönderme, belirli bir odadaki istemcilere veri gönderme veya gönderen hariç tüm istemcilere veri gönderme gibi farklı yayınlama seçenekleri sunar.
// Sunucu tarafı
io.on('connection', (socket) => {
socket.on('new message', (msg) => {
// Tüm bağlı istemcilere yayınla
io.emit('new message', msg);
// Gönderen hariç tüm istemcilere yayınla
socket.broadcast.emit('new message', msg);
});
});
4. Odalar (Rooms)
Odalar, istemcileri gruplamak ve yalnızca belirli bir odadaki istemcilere veri göndermek için bir yoldur. Bu, sohbet odaları veya çevrimiçi oyun oturumları gibi belirli kullanıcı gruplarını hedeflemeniz gerektiğinde kullanışlıdır. İstemciler odalara dinamik olarak katılabilir veya ayrılabilir.
// Sunucu tarafı
io.on('connection', (socket) => {
socket.on('join room', (room) => {
socket.join(room);
console.log(`Kullanıcı ${socket.id} ${room} odasına katıldı`);
// Odaydaki tüm istemcilere bir mesaj gönder
io.to(room).emit('new user joined', `Kullanıcı ${socket.id} odaya katıldı`);
});
socket.on('send message', (data) => {
// Mesajı odaydaki tüm istemcilere gönder
io.to(data.room).emit('new message', data.message);
});
socket.on('leave room', (room) => {
socket.leave(room);
console.log(`Kullanıcı ${socket.id} ${room} odasından ayrıldı`);
});
});
// İstemci tarafı
socket.emit('join room', 'room1');
socket.emit('send message', { room: 'room1', message: 'Room1 den merhaba' });
socket.on('new message', (message) => {
console.log('Alınan mesaj:', message);
});
5. Namespaceler
Namespaceler, birden fazla amaç için tek bir TCP bağlantısını çoğullamanıza olanak tanır ve uygulama mantığınızı tek bir paylaşılan temel bağlantı üzerinden böler. Onları tek bir fiziksel soket içindeki ayrı sanal "soketler" olarak düşünün. Sohbet uygulaması için bir namespace, oyun için başka bir namespace kullanabilirsiniz. İletişim kanallarını düzenli ve ölçeklenebilir tutmaya yardımcı olur.
//Sunucu tarafı
const chatNsp = io.of('/chat');
chatNsp.on('connection', (socket) => {
console.log('sohbet için biri bağlandı');
// ... sohbet olaylarınız ...
});
const gameNsp = io.of('/game');
gameNsp.on('connection', (socket) => {
console.log('oyun için biri bağlandı');
// ... oyun olaylarınız ...
});
//İstemci tarafı
const chatSocket = io('/chat');
const gameSocket = io('/game');
chatSocket.emit('chat message', 'Sohbetten merhaba!');
gameSocket.emit('game action', 'Oyuncu hareket etti!');
Socket.IO ile Gerçek Zamanlı Özellikler Uygulama
Socket.IO kullanarak bazı yaygın gerçek zamanlı özellikleri nasıl uygulayacağımızı inceleyelim.
1. Gerçek Zamanlı Bir Sohbet Uygulaması Oluşturma
Daha önce oluşturduğumuz temel sohbet uygulaması, gerçek zamanlı sohbetin temel ilkelerini gösterir. Bunu geliştirmek için şu gibi özellikler ekleyebilirsiniz:
- Kullanıcı Kimlik Doğrulaması: Kullanıcıları belirleyip kimliklerini doğruladıktan sonra mesaj göndermelerine izin verin.
- Özel Mesajlaşma: Kullanıcıların belirli kişilere mesaj göndermesine izin verin.
- Yazma Göstergeleri: Bir kullanıcının mesaj yazmakta olduğunu gösterin.
- Mesaj Geçmişi: Önceki mesajları saklayın ve görüntüleyin.
- Emoji Desteği: Kullanıcıların emoji göndermesini ve almasını sağlayın.
İşte yazma göstergeleri ekleme örneği:
// Sunucu tarafı
io.on('connection', (socket) => {
socket.on('typing', (username) => {
// Gönderen hariç tüm istemcilere yayınla
socket.broadcast.emit('typing', username);
});
socket.on('stop typing', (username) => {
// Gönderen hariç tüm istemcilere yayınla
socket.broadcast.emit('stop typing', username);
});
});
// İstemci tarafı
input.addEventListener('input', () => {
socket.emit('typing', username);
});
input.addEventListener('blur', () => {
socket.emit('stop typing', username);
});
socket.on('typing', (username) => {
typingIndicator.textContent = `${username} yazıyor...`;
});
socket.on('stop typing', () => {
typingIndicator.textContent = '';
});
2. Gerçek Zamanlı Bir Analiz Panosu Oluşturma
Gerçek zamanlı analiz panoları, işletme performansı hakkında değerli bilgiler sağlayan güncel metrikleri ve eğilimleri görüntüler. Veri kaynağından gösterge panosuna gerçek zamanlı olarak veri akışı sağlamak için Socket.IO'yu kullanabilirsiniz.
İşte basitleştirilmiş bir örnek:
// Sunucu tarafı
const data = {
pageViews: 1234,
usersOnline: 567,
conversionRate: 0.05
};
setInterval(() => {
data.pageViews += Math.floor(Math.random() * 10);
data.usersOnline += Math.floor(Math.random() * 5);
data.conversionRate = Math.random() * 0.1;
io.emit('dashboard update', data);
}, 2000); // Her 2 saniyede bir veri gönder
// İstemci tarafı
socket.on('dashboard update', (data) => {
document.getElementById('pageViews').textContent = data.pageViews;
document.getElementById('usersOnline').textContent = data.usersOnline;
document.getElementById('conversionRate').textContent = data.conversionRate.toFixed(2);
});
3. İşbirlikçi Bir Düzenleme Aracı Geliştirme
İşbirlikçi düzenleme araçları, birden fazla kullanıcının belgeleri veya kodu aynı anda düzenlemesine olanak tanır. Socket.IO, değişiklikleri kullanıcılar arasında gerçek zamanlı olarak senkronize etmek için kullanılabilir.
İşte temel bir örnek:
// Sunucu tarafı
io.on('connection', (socket) => {
socket.on('text change', (data) => {
// Değişiklikleri aynı odadaki diğer tüm istemcilere yayınla
socket.broadcast.to(data.room).emit('text change', data.text);
});
});
// İstemci tarafı
textarea.addEventListener('input', () => {
socket.emit('text change', { room: roomId, text: textarea.value });
});
socket.on('text change', (text) => {
textarea.value = text;
});
Socket.IO Uygulamalarını Ölçeklendirme
Socket.IO uygulamanız büyüdükçe, ölçeklenebilirliği göz önünde bulundurmanız gerekecektir. Socket.IO ölçeklenebilir olacak şekilde tasarlanmıştır, ancak çok sayıda eşzamanlı bağlantıyı işlemek için belirli stratejiler uygulamanız gerekecektir.
1. Yatay Ölçeklendirme
Yatay ölçeklendirme, uygulamanızı birden fazla sunucuya dağıtmayı içerir. Bu, gelen bağlantıları mevcut sunuculara dağıtmak için bir yük dengeleyici kullanarak elde edilebilir. Ancak, Socket.IO ile, bağlantı süresi boyunca istemcilerin tutarlı bir şekilde aynı sunucuya yönlendirildiğinden emin olmanız gerekir. Bunun nedeni, Socket.IO'nun bağlantı durumunu korumak için bellekteki veri yapılarına dayanmasıdır. Yapışkan oturumların/oturum benzerliğinin kullanılması genellikle gereklidir.
2. Redis Adaptörü
Socket.IO Redis adaptörü, birden fazla Socket.IO sunucusu arasında olayları paylaşmanıza olanak tanır. Olayları tüm bağlı sunucular arasında yayınlamak için bellek içi bir veri deposu olan Redis'i kullanır. Bu, bağlantı durumunu kaybetmeden uygulamanızı yatay olarak ölçeklendirmenizi sağlar.
// Sunucu tarafı
const { createAdapter } = require('@socket.io/redis-adapter');
const { createClient } = require('redis');
const pubClient = createClient({ host: 'localhost', port: 6379 });
const subClient = pubClient.duplicate();
Promise.all([pubClient.connect(), subClient.connect()]).then(() => {
io.adapter(createAdapter(pubClient, subClient));
io.listen(3000);
});
3. Yük Dengeleme
Birden fazla Socket.IO sunucusuna trafiği dağıtmak için bir yük dengeleyici önemlidir. Yaygın yük dengeleme çözümleri arasında Nginx, HAProxy ve AWS Elastic Load Balancing veya Google Cloud Load Balancing gibi bulut tabanlı yük dengeleyiciler bulunur. İstemcilerin tutarlı bir şekilde aynı sunucuya yönlendirildiğinden emin olmak için yapışkan oturumlar kullanmak üzere yük dengeleyicinizi yapılandırın.
4. Dikey Ölçeklendirme
Dikey ölçeklendirme, tek bir sunucunun kaynaklarını (CPU, bellek) artırmayı içerir. Bu, yatay ölçeklendirmeden daha basit uygulanabilse de, sınırlamaları vardır. Sonunda, tek bir sunucunun kaynaklarını artıramayacağınız bir noktaya ulaşacaksınız.
5. Kodu Optimize Etme
Verimli kod yazmak, Socket.IO uygulamanızın performansını önemli ölçüde artırabilir. Gereksiz hesaplamalardan kaçının, veri aktarımını en aza indirin ve veritabanı sorgularınızı optimize edin. Profil oluşturma araçları performans darboğazlarını belirlemenize yardımcı olabilir.
Socket.IO Uygulaması için En İyi Uygulamalar
Socket.IO projenizin başarısını sağlamak için şu en iyi uygulamaları göz önünde bulundurun:
1. Bağlantılarınızı Güvene Alın
İstemciler ve sunucu arasındaki iletişimi şifrelemek için güvenli WebSockets (WSS) kullanın. Bu, hassas verileri dinleme ve kurcalamadan korur. Alanınız için bir SSL sertifikası alın ve sunucunuzu WSS kullanacak şekilde yapılandırın.
2. Kimlik Doğrulama ve Yetkilendirme Uygulayın
Kullanıcıların kimliğini doğrulamak için kimlik doğrulama ve kaynaklara erişimi kontrol etmek için yetkilendirme uygulayın. Bu, yetkisiz erişimi önler ve uygulamanızı kötü amaçlı saldırılardan korur. JWT (JSON Web Tokens) veya OAuth gibi yerleşik kimlik doğrulama mekanizmalarını kullanın.
3. Hataları Zarifçe Ele Alın
Beklenmeyen hataları zarifçe ele almak ve uygulama çökmelerini önlemek için uygun hata işlemeyi uygulayın. Hataları hata ayıklama ve izleme amacıyla günlüğe kaydedin. Kullanıcılara bilgilendirici hata mesajları sağlayın.
4. Heartbeat Mekanizmasını Kullanın
Socket.IO yerleşik bir heartbeat mekanizmasına sahiptir, ancak bunu uygun şekilde yapılandırmalısınız. Ölü bağlantıları algılamak ve bunlarla başa çıkmak için makul bir ping aralığı ve ping zaman aşımı ayarlayın. Bellek sızıntılarını önlemek için bağlantısı kesilen istemcilerle ilişkili kaynakları temizleyin.
5. Performansı İzleyin
Potansiyel sorunları belirlemek ve performansı optimize etmek için Socket.IO uygulamanızın performansını izleyin. Bağlantı sayısı, mesaj gecikmesi ve CPU kullanımı gibi metrikleri izleyin. Prometheus, Grafana veya New Relic gibi izleme araçlarını kullanın.
6. Kullanıcı Girdisini Temizleyin
Siteler arası komut dosyası (XSS) saldırılarını ve diğer güvenlik açıklarını önlemek için her zaman kullanıcı girdisini temizleyin. Tarayıcıda görüntülemeden önce kullanıcı tarafından sağlanan verileri kodlayın. Verilerin beklenen biçimlere uygun olduğundan emin olmak için girdi doğrulamayı kullanın.
7. Hız Sınırlaması
Uygulamanızı kötüye kullanımdan korumak için hız sınırlaması uygulayın. Bir kullanıcının belirli bir zaman diliminde yapabileceği istek sayısını sınırlayın. Bu, hizmet reddi (DoS) saldırılarını önler ve sunucu kaynaklarınızı korur.
8. Sıkıştırma
İstemciler ve sunucu arasında iletilen verilerin boyutunu azaltmak için sıkıştırmayı etkinleştirin. Bu, özellikle büyük miktarda veri ileten uygulamalar için performansı önemli ölçüde artırabilir. Socket.IO, `compression` ara yazılımını kullanarak sıkıştırmayı destekler.
9. Doğru Taşıma Aracını Seçin
Socket.IO varsayılan olarak WebSockets'u kullanır ancak WebSockets kullanılamıyorsa diğer yöntemlere (HTTP uzun yoklama gibi) geri döner. Socket.IO bunu otomatik olarak ele alsa da, sonuçlarını anlayın. WebSockets genellikle en verimli olanlardır. WebSockets'un sıklıkla engellendiği ortamlarda (belirli kurumsal ağlar, kısıtlayıcı güvenlik duvarları), alternatif yapılandırmaları veya mimarileri göz önünde bulundurmanız gerekebilir.
10. Küresel Hususlar: Yerelleştirme ve Saat Dilimleri
Küresel bir kitle için uygulamalar oluştururken, yerelleştirmeyi göz önünde bulundurun. Sayıları, tarihleri ve para birimlerini kullanıcının yerel ayarlarına göre biçimlendirin. Olayların kullanıcının yerel saat diliminde görüntülenmesini sağlamak için saat dilimlerini doğru şekilde ele alın. Uygulamanızı yerelleştirme sürecini basitleştirmek için uluslararasılaştırma (i18n) kütüphanelerini kullanın.
Örnek: Saat Dilimi İşleme
Sunucunuzun olay zamanlarını UTC'de sakladığını varsayalım. Olay zamanını kullanıcının yerel saat diliminde görüntülemek için `moment-timezone` gibi bir kitaplık kullanabilirsiniz.
// Sunucu tarafı (olay zamanını UTC'de gönderme)
const moment = require('moment');
io.on('connection', (socket) => {
socket.on('request event', () => {
const eventTimeUTC = moment.utc(); // UTC'de mevcut zaman
socket.emit('event details', {
timeUTC: eventTimeUTC.toISOString(),
description: 'Küresel konferans görüşmesi'
});
});
});
// İstemci tarafı (kullanıcının yerel saat diliminde görüntüleme)
const moment = require('moment-timezone');
socket.on('event details', (data) => {
const eventTimeLocal = moment.utc(data.timeUTC).tz(moment.tz.guess()); // Kullanıcının saat dilimine dönüştür
document.getElementById('eventTime').textContent = eventTimeLocal.format('MMMM Do YYYY, h:mm:ss a z');
});
Örnek: Para Birimi Biçimlendirme
Para birimi değerlerini doğru görüntülemek için, kullanıcının yerel ayarlarına göre para birimini biçimlendirmek için `Intl.NumberFormat` gibi bir kitaplık kullanın.
// İstemci tarafı
const priceUSD = 1234.56;
const userLocale = navigator.language || 'en-US'; // Kullanıcının yerel ayarını algıla
const formatter = new Intl.NumberFormat(userLocale, {
style: 'currency',
currency: 'USD', // Başlangıç noktası olarak USD kullanın, gerektiği gibi ayarlayın
});
const formattedPrice = formatter.format(priceUSD);
document.getElementById('price').textContent = formattedPrice;
//Farklı para birimlerinde fiyat göstermek için:
const formatterEUR = new Intl.NumberFormat(userLocale, {
style: 'currency',
currency: 'EUR',
});
const priceEUR = 1100.00;
const formattedPriceEUR = formatterEUR.format(priceEUR);
document.getElementById('priceEUR').textContent = formattedPriceEUR;
Sonuç
Socket.IO, web uygulamalarında gerçek zamanlı veri akışının uygulanmasını basitleştirir. Socket.IO'nun temel kavramlarını anlayarak, en iyi uygulamaları uygulayarak ve uygulamanızı uygun şekilde ölçeklendirerek, günümüzün dijital ortamının taleplerini karşılayan sağlam ve ölçeklenebilir gerçek zamanlı uygulamalar oluşturabilirsiniz. Bir sohbet uygulaması, gerçek zamanlı bir analiz panosu veya işbirlikçi bir düzenleme aracı oluşturuyor olun, Socket.IO küresel bir kitle için ilgi çekici ve duyarlı kullanıcı deneyimleri oluşturmak için ihtiyaç duyduğunuz araçları ve esnekliği sağlar.