Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Uygulama içi mesajlaşma mantığı
#11
Merhaba hibrid çözümler de düşünebilirsiniz. 

Verimliliği tartışmayacağım, amaç mesajın A noktasından B noktasına sağlıklı bir şekilde ulaşması olmalı. Süre kaygınız sadece kullanılacak uzak sunucu enstrümanı ile ilişkilidir. 

Şirket fiziki iç ağında TCP, Internet ile başka fiziksel ağlara köprü için REST.

Harici WAN için TCP PORT açmak zorunda kalınmaz. Güvenlidir.

WAN-WAN arası yarı online diyelim REST, her REST iletişim içindekiler aynı anda TCP Server, kullanıcılar TCP Client.

REST timer ile 5 sn interval iyidir. 5.saniyeye denk gelirse anlık sonuç, 1.saniyeye denk gelirse maksimum 4  saniye bekleme okur. 

TCP  ise dahili network hızında anlık olacaktır.

Ek olarak ben olsam ne yapardım, REST alternatif olarak Firebase DB (google cloud) çok hızlıdır. Onu da mercek altına almakta fayfa var. Tabi firebase için internet bağlantısı gerekir. 

Yerel sunucu oluşturma konusunda incelemek isterseniz bir UNIT eklemek ile mümkün kılan, forumda suya soapa dokunmadan diye arayınca çıkacak bir örnek paylaşıldı.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#12
(01-01-2022, Saat: 23:26)OldyCoder Adlı Kullanıcıdan Alıntı: Neden rest api olmaz?
Çünkü rest request gerçekte bir http request'tir. Server'la bir tcp bağlantısı kurulur, request paketi gönderilir, cevabı alınır ve connection kapanır.
Bir node'a mesaj göndermek için bunu uygulayabilirsiniz. Peki mesaj almak istediğinizde ne yapacaksınız?
Belki bir timer'da belli interval'da server'a request gönderip mesaj varmı diye check edebilirsiniz. 
Ama her haliyle verimsiz bir yapı.

Peki ne olur?
Size lazım olan full duplex bir iletişim kanalı.
Yani connection kurulduktan sonra close olana kadar iki yönlü veri gönderip alabileceğiniz bir yapı.
Kısaca bir tcp bağlantısı aslında.

Şimdi iki seçenek var.
1- Oturup kendi authentication ve messaging protokolünüzü geliştirebilirsiniz.
2- Var olanlardan birini kullanabilirsiniz.

1 için ben olsam hiç girmem bu işe.
2 içinse birçok seçenek var. 

- Xmpp. Whatsapp bunu kullanır.
- Mqtt. Amacı bu olmasa bile kullanabilirsiniz
- Redis. Yine amacı direk chat olmasa bile kullanılabilir.
- SignalR. Chat'dan fazlası.

Şimdi olay biraz sizin web projenizi nerede geliştireceğinize bağlı.
Asp.net ise SignalR o tarafta çok popüler. Popüleritesini hak da ediyor.
Tümü için bir delphi ve javascript client bulabilirsiniz.
Hocam cevabınız için teşekkürler. Aslında benimde restfull ile aklımda bir yöntem mevcut mesaj geldimi anlamak için bunu fcm kullanarak çözemezmiyiz. Mesaj geldiğinde cihaza push notificationla bildirim gelse ve bunla karşıya sorgu gönderilip mesajlar alınsa verimli olmaz mı acaba ?

(02-01-2022, Saat: 13:02)mrmarman Adlı Kullanıcıdan Alıntı: Merhaba hibrid çözümler de düşünebilirsiniz. 

Verimliliği tartışmayacağım, amaç mesajın A noktasından B noktasına sağlıklı bir şekilde ulaşması olmalı. Süre kaygınız sadece kullanılacak uzak sunucu enstrümanı ile ilişkilidir. 

Şirket fiziki iç ağında TCP, Internet ile başka fiziksel ağlara köprü için REST.

Harici WAN için TCP PORT açmak zorunda kalınmaz. Güvenlidir.

WAN-WAN arası yarı online diyelim REST, her REST iletişim içindekiler aynı anda TCP Server, kullanıcılar TCP Client.

REST timer ile 5 sn interval iyidir. 5.saniyeye denk gelirse anlık sonuç, 1.saniyeye denk gelirse maksimum 4  saniye bekleme okur. 

TCP  ise dahili network hızında anlık olacaktır.

Ek olarak ben olsam ne yapardım, REST alternatif olarak Firebase DB (google cloud) çok hızlıdır. Onu da mercek altına almakta fayfa var. Tabi firebase için internet bağlantısı gerekir. 

Yerel sunucu oluşturma konusunda incelemek isterseniz bir UNIT eklemek ile mümkün kılan, forumda suya soapa dokunmadan diye arayınca çıkacak bir örnek paylaşıldı.

Hocam o aradaki tetikleme işlevini fire cloud messaging ile çözemezmiyiz acaba bunu denemeyi planlıyordum.
Cevapla
#13
Firebase Cloud Messaging ile tetikleme işi Android/IOS için geçerli, Win32 uygulamalarında araya bir layer daha atmak gerekiyor.
Node.JS socket ile olabilir. Denemedim ama denemeye de değer aslında. Boş vaktimde denemek isterim.

Benim projelerde yarı-online diye tabir ettiğim 3-5 saniye gibi belirli periyotlarla sunucuya "yeni tarihli bir güncelleme var mı ?" sorguları ile yürüyorum.
İnternet üzerinden Firebase Realtime Database hem ücretsiz hem de çok verimli çalışıyor. Onun için üzerinde düşünülmesi gerekir dedim. 

Yerel ise ağda yani internet bağlantısı olmayan Intranet olursa bu durumda TCP candır gerisi heyecandır diyorum. TCP de olsa yazışmalar LOG için kayıt altında tutulması, veri trafiğindeki belge / resim vb. tamponlama için yine bir veritabanı katmanı iletişimin sağlığı açısından faydalı olacaktır. Bu durumda yükü veritabanı katmanı alırken TCP trafiği sadece "bir bak" "şu ola gerçekleşti" türünden event protokol olarak çalışıyor.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#14
(03-01-2022, Saat: 14:01)mrmarman Adlı Kullanıcıdan Alıntı: Firebase Cloud Messaging ile tetikleme işi Android/IOS için geçerli, Win32 uygulamalarında araya bir layer daha atmak gerekiyor.
Node.JS socket ile olabilir. Denemedim ama denemeye de değer aslında. Boş vaktimde denemek isterim.

Benim projelerde yarı-online diye tabir ettiğim 3-5 saniye gibi belirli periyotlarla sunucuya "yeni tarihli bir güncelleme var mı ?" sorguları ile yürüyorum.
İnternet üzerinden Firebase Realtime Database hem ücretsiz hem de çok verimli çalışıyor. Onun için üzerinde düşünülmesi gerekir dedim. 

Yerel ise ağda yani internet bağlantısı olmayan Intranet olursa bu durumda TCP candır gerisi heyecandır diyorum. TCP de olsa yazışmalar LOG için kayıt altında tutulması, veri trafiğindeki belge / resim vb. tamponlama için yine bir veritabanı katmanı iletişimin sağlığı açısından faydalı olacaktır. Bu durumda yükü veritabanı katmanı alırken TCP trafiği sadece "bir bak" "şu ola gerçekleşti" türünden event protokol olarak çalışıyor.

Hocam önceklikle cevabınız için çok teşekkürler.

Hocam uygulamam zaten windows için düşünmüyorum. Android / IOS olacak belki ilerde web sitesi yapabilirim ama oda ilerde olacak birşey.
Node.Js araştırdım hocam biraz idHttpServer tabanı ile delphide kurulabilecek bir yapı şeklinde stackowerflowda bahsi geçmiş bazı durumlarda idTCPServer ile de yapılabilir deniliyor fakat bunlarda uygulama çevrim içi iken işlevsel yine uygulama kapalı iken de tetiklenebilecek bir yönteme ihtiyacım var ve şuan FCM den başka aklıma bir yöntem gelmiyor.

@ozcanm hocamın paylaştığı bu videoyu inceledim. Sadece sohbet balonu yapıldığını düşünüyordum fakat baya içerikli bir video olduğunu farkettim.  Smile
Buradaki chat uygulamasının yöntemi de anladığım kadarı ile FCM ile yapılmış ama @ozcanm 3. part bileşen kullanmadan chat balonu yapmayı göstermemiş 3. part bir bileşenle yapmış gördüğüm kadarı ile hala chat balonu sorunum mevcuttur.  Smile

Sonuç olarak FCM ile bir kaç deneme yapmayı planlıyorum inş. istediğim gibi olur.  Wink
Cevapla
#15
Merhaba,
FMX mimarisine daha yeni girmeye başladım. Kulağı çok tersten tutan bir örnek olabilir. En azından size fikir vermesi açısından bir örnek hazırladım. Umarım işe yarar bende kulağı tersten tutuyorsam doğrusu nasıl olur öğrenmiş olurum  Wink  Cool

Çalışma ekte yer almaktadır.

İyi Çalışmalar.

SohbetBalon.gif




.zip   ChatTest.zip (Dosya Boyutu: 220,68 KB / İndirme Sayısı: 45)
Cevapla
#16
Selamlar,

Delphi IDE si içerisinde TTetheringManager, TTetheringAppProfile componentleri var. 

Network - Bluetooth üzerinden data- stream transferi yapabiliyor. 

Örnek uygulamalar içerisindeki "Samples\Object Pascal\RTL\Tethering\" klasörünü inceyelebilir siniz.
Cevapla
#17
Tethering işinizi çözüyorsa bir Helper Unit ile işte örnek proje...
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#18
(04-01-2022, Saat: 14:29)mrmarman Adlı Kullanıcıdan Alıntı: Tethering işinizi çözüyorsa bir Helper Unit ile işte örnek proje...

Çok teşekkürler hocam cevabınız için fakat bu network üzerinden değil de internet üzerinden olan bir sistem şeklinde çalışacak haliyle TCP/IP yada FCM üzerinden çalışan bir sistem kullanmam gerekiyor. Belki ikisini harmanlarım öyle bir seçeneğim de mevcut aslında TCP ile tetikleme işlemi yapıp restle sorgu işlemi gerçekleştirebilirim.

(04-01-2022, Saat: 09:11)ozcanm Adlı Kullanıcıdan Alıntı: Merhaba,
FMX mimarisine daha yeni girmeye başladım. Kulağı çok tersten tutan bir örnek olabilir. En azından size fikir vermesi açısından bir örnek hazırladım. Umarım işe yarar bende kulağı tersten tutuyorsam doğrusu nasıl olur öğrenmiş olurum  Wink  Cool

Çalışma ekte yer almaktadır.

İyi Çalışmalar.

SohbetBalon.gif

Hocam elinize emeğinize sağlık değerlendireceğim kesinlikle
Cevapla
#19
@codder71
Firebase ile herşeyi halledersiniz. Bir tane gmail hesabı altyapı için yeterli.
1.  Google kaynaklarına erişim için Server to Server yapı tercih ederseniz kullanıcıların epostasına ihtiyaç kalmaz. OAuth2.0 için JOSÉ ile yerel imzalama veya SSL. so Library ile apk şişirmeyeyim derseniz de yine Firebase web sunucusu imkanını kullanarak uzaktan OAuth2.0 ile imzalatıp token üretebilir oturum kısmını halledebilirsiniz.

2. Firebase DB tarafına zaten REST ile erişiliyor. Uygulamayı kuran için otomatik üretilen UserToken uygulama kaldırılmadığı sürece sabit zaten, bir defa sunucuya gönderip bir tabloya eklenmesi ile mobil cihaz kullanıcı sisteme eklenmiş olur. Sadece kaldırıldığında çöp oluyor. Bunlara bir tane son oturum açma tarihi mutlaka güncelleme olsun, yılda bir temizlik yaparsınız. Kaydı silinmiş olsa dahi program öobil cihazdan kaldırılmamış ise zaten yeniden aynı Token tabloya insert edilecektir. 

3. Mesaj kısmı da keza bu tablodan seçilecek kullanıcı veya kullanıcılar tokenları target olarak seçilerek dilediğiniz kadar kullanıcı dilediği kadar kullanıcıya tekil veya toplu mesaj atabilir, kaynak paylaşabilir.

Ben de bu tip bir yapıyı demirbaş için QRCode entegreli uygulayıp kişinin aldığı aksesuar tipi Demirbaş olmayan malzemeyi kendisi ürünün resmini çekerek dolaptan okuduğu qrcode ile sayısal detayıyla birlikte Demirbaş sorumlusu mobil cihaza bildirim ve veritabanında hareket olarak kullanıyorum. Geri besleme için dolap şifresi, son kullanan, kırık çıkık ne varsa takibi oluyor. (Fotoğraf gönderimini için foto cloudinary'ye gönderilip linki yollanıyor)
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#20
(06-01-2022, Saat: 09:13)mrmarman Adlı Kullanıcıdan Alıntı: @codder71
Firebase ile herşeyi halledersiniz. Bir tane gmail hesabı altyapı için yeterli.
1.  Google kaynaklarına erişim için Server to Server yapı tercih ederseniz kullanıcıların epostasına ihtiyaç kalmaz. OAuth2.0 için JOSÉ ile yerel imzalama veya SSL. so Library ile apk şişirmeyeyim derseniz de yine Firebase web sunucusu imkanını kullanarak uzaktan OAuth2.0 ile imzalatıp token üretebilir oturum kısmını halledebilirsiniz.

2. Firebase DB tarafına zaten REST ile erişiliyor. Uygulamayı kuran için otomatik üretilen UserToken uygulama kaldırılmadığı sürece sabit zaten, bir defa sunucuya gönderip bir tabloya eklenmesi ile mobil cihaz kullanıcı sisteme eklenmiş olur. Sadece kaldırıldığında çöp oluyor. Bunlara bir tane son oturum açma tarihi mutlaka güncelleme olsun, yılda bir temizlik yaparsınız. Kaydı silinmiş olsa dahi program öobil cihazdan kaldırılmamış ise zaten yeniden aynı Token tabloya insert edilecektir. 

3. Mesaj kısmı da keza bu tablodan seçilecek kullanıcı veya kullanıcılar tokenları target olarak seçilerek dilediğiniz kadar kullanıcı dilediği kadar kullanıcıya tekil veya toplu mesaj atabilir, kaynak paylaşabilir.

Ben de bu tip bir yapıyı demirbaş için QRCode entegreli uygulayıp kişinin aldığı aksesuar tipi Demirbaş olmayan malzemeyi kendisi ürünün resmini çekerek dolaptan okuduğu qrcode ile sayısal detayıyla birlikte Demirbaş sorumlusu mobil cihaza bildirim ve veritabanında hareket olarak kullanıyorum. Geri besleme için dolap şifresi, son kullanan, kırık çıkık ne varsa takibi oluyor. (Fotoğraf gönderimini için foto cloudinary'ye gönderilip linki yollanıyor)

Hocam aynen katılıyorum. Firebase çok avantajlı bir yöntem toplu bildirimler atmanın yanında gruplara bölme ve tek kişiye mesaj göndermekte mümkün aynı zamanda uygulama kapalı iken de uygulamaya mesaj göndermek mümkün aslında sadece mesajlaşmanın yanında uygulamaya bir kişi başka cihazdan bağlandığı zaman eski cihazdan login out kısmında firebase ile iletişimini sağlamayı düşünüyorum. 

Kaynak olarak @TescilsizUzman hocanın kitabından bununla ilgili bölümleri kullanmak istiyorum orada uygulamadan tokken alınmış ve orada tokken change eventi var tokkende değişiklik olursa olay tetikleniyor ve tablodan uptade ile firebase tokkeni değiştirebilirim diye düşünüyorum. Bunu servere nasıl yaptırabilirim hocam servere yaptırmakta aslında mantıklı hem uygulama boyutu açısından da fena olmaz aslında.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  ios için uygulama derleme codder71 18 496 Dün, Saat: 08:25
Son Yorum: RAD Coder
  Android Uygulama İkonu ARM 2 414 11-11-2025, Saat: 12:15
Son Yorum: ARM
  Apple Store'a Uygulama Yükleyebilen Arkadaşlarla Yardımlaşma... Jakarta2 23 4.007 04-10-2025, Saat: 16:51
Son Yorum: tavsanlili
  google play ve apple storede ücretli uygulama yayınlamak barissagir 4 834 15-09-2025, Saat: 15:03
Son Yorum: barissagir
  Uygulama üzerinden Wifi Bağlanma ? nurah 4 1.057 28-08-2025, Saat: 10:50
Son Yorum: nurah



Konuyu Okuyanlar: 1 Ziyaretçi