Ruby on Rails 8 ile Action Cable Kullanarak Çevrimiçi/Çevrimdışı Durum Özelliği Oluşturma
Merhaba! Bugün sizlere Ruby on Rails 8 ve Action Cable kullanarak uygulamalarınıza gerçek zamanlı çevrimiçi/çevrimdışı kullanıcı durum özelliği eklemeyi göstereceğim. Bu özellik, kullanıcılarınızın anlık olarak çevrimiçi olup olmadığını görmenizi sağlar ve etkileşimi artırır. Öncelikle, Action Cable’ın ne olduğunu ve neden kullanmamız gerektiğini kısaca açıklayalım.
Action Cable, Rails uygulamalarınızda gerçek zamanlı özelliklerini eklemenizi sağlayan bir bileşendir. WebSocket protokolünü kullanarak sunucu ve istemci arasında sürekli bir bağlantı kurar. Bu sayede, sunucudan istemciye anlık veri aktarımı mümkün olur. Bu da, kullanıcı durumunun anlık olarak güncellenmesi için ideal bir çözümdür. Başka bir deyişle, Action Cable sayesinde kullanıcılarınızın çevrimiçi veya çevrimdışı durumunu anında görebilirsiniz.
Gerekli Kurulum ve Ayarlar
Öncelikle, bir Rails 8 uygulaması oluşturmanız veya var olan bir uygulamanızı kullanmanız gerekir. Action Cable’ı zaten kullanıyorsanız, bu bölümü geçebilirsiniz. Action Cable’ı henüz kurmadıysanız, aşağıdaki komutu çalıştırarak projenize ekleyebilirsiniz:
rails generate channel ApplicationCable
Ardından, config/cable.yml dosyasını uygulamanızın ihtiyaçlarına göre düzenleyin. Bu dosya, Action Cable’ın nasıl çalışacağını tanımlar. Daha sonra, bir kanal oluşturmanız gerekecek. Bu kanal, istemci ile sunucu arasında iletişimi yönetecektir. Bu işlem için aşağıdaki komutu kullanabiliriz:
rails generate channel PresenceChannel
Bu komut, app/channels/presence_channel.rb dosyasını oluşturur. Bu dosya, kullanıcıların bağlanma ve bağlantıyı kesme durumlarını izleyecektir. Bu dosyayı aşağıdaki gibi düzenleyebilirsiniz:
class PresenceChannel < ApplicationCable::Channel
def subscribed
stream_from "presence"
end
def unsubscribed
# Any cleanup needed when channel is unsubscribed
end
end
İstemci Tarafı (JavaScript)
Şimdi, istemci tarafında, Action Cable'ı kullanarak sunucuya bağlanacak ve kullanıcı durumunu güncelleyeceğiz. Bunun için, Turbolinks gibi bir kütüphane kullanıyorsanız, sayfa yüklendiğinde veya sayfada herhangi bir değişiklik olduğunda bağlantıyı yeniden kurmayı düşünmelisiniz. Bunun için JavaScript kodu kullanacağız. Örneğin, app/javascript/channels/presence_channel.js dosyasını aşağıdaki gibi oluşturabilirsiniz:
import consumer from "./consumer"
consumer.subscriptions.create("presence", {
connected() {
// Called when the subscription is ready for use on the server
console.log("Bağlantı kuruldu!");
},
disconnected() {
// Called when the subscription has been terminated by the server
console.log("Bağlantı kesildi!");
},
received(data) {
// Called when there's incoming data on the websocket for this channel
console.log(data);
}
});
Bu kod, Action Cable'a bağlanacak ve bağlantı durumunu konsola yazdıracaktır. Daha gelişmiş uygulamalarda, buradan gelen verileri kullanarak kullanıcı arayüzünü güncelleyebilirsiniz. Örneğin, çevrimiçi kullanıcı listesini dinamik olarak güncelleyebilirsiniz.
Sunucu Tarafı (Ruby)
Sunucu tarafında, PresenceChannel'ı kullanarak kullanıcıların bağlantı durumunu izleyeceğiz. Bu, kullanıcıların bağlanıp bağlantısını kestiğinde tetiklenen olayları kullanarak yapılabilir. Bu olaylar, diğer kullanıcılara anında bildirim göndermek için kullanılabilir.
Bu örnekte, kullanıcıların çevrimiçi/çevrimdışı durumunu takip etmek ve bunu diğer kullanıcılara iletmek için PresenceChannel'ı kullandık. Daha detaylı bir uygulama için, veritabanında kullanıcıların durumunu saklamak ve daha karmaşık mantıklar eklemek gerekebilir. Bu, uygulama gereksinimlerine bağlıdır. Örneğin, son çevrimiçi zamanını da kaydedebilirsiniz.
Bu gelişmiş özelliklerle, uygulamanızda gerçek zamanlı etkileşimler oluşturabilirsiniz. Örneğin, sohbet uygulaması geliştirmek için Action Cable'ı kullanabilir ve kullanıcıların anlık olarak mesajlarını almalarını sağlayabilirsiniz. Benzer şekilde, oyun geliştirmek için de Action Cable'ı kullanabilirsiniz. Action Cable ile gerçek zamanlı uygulamalar geliştirmek oldukça kolaydır. Daha fazla bilgi için, resmi Rails belgelerine göz atabilirsiniz. Action Cable Dokümanları
Umarım bu makale, Ruby on Rails 8 ile Action Cable kullanarak çevrimiçi/çevrimdışı durum özelliği oluşturmanızda yardımcı olmuştur. Daha fazla soru ve görüşleriniz için web sitemi ziyaret edebilir veya bana ulaşabilirsiniz.
#Etiketler: Ruby on Rails, Action Cable, Çevrimiçi, Çevrimdışı, Gerçek Zamanlı, Kullanıcı Durumu, WebSockets, Rails 8, JavaScript, Sunucu, İstemci
