Hocalarım teeeee android'e yeni girdiğim zamanlar (3 sene nce falan) Aklımda birşeyler vardı yapmaya çalıştım daha 16 yaşında ergen olduğum için yle uçuk kaçık şeyler düşündüm sonra biraz android ğrenmeye başlayınca işin o kadar kolay olmadığını ğrendim. Vel hasıl, Geçen senelerde forumda konu açmıştım da bulamadım. Araştırıyordum o zamanlar sonra sonuç elde edemeyince bıraktım... Amacım Web Taraflı Bir ARAMA isteğinde bulunulduğunda Android tarafında HANG UP edilmesini yani Aramanın gerçekleşmesini istiyorum. Bir nevi Çağrı merkezi gibi düşünülebilir. Internet üzerinden Php Serverden gelen istek ile android tarafında Arama yaptırmak istiyorum Keza Android den PHP Web'e bir arama. Işin basit olmayacağını biliyorum fakat bir hayli boş zamanım var PHP de yeni yeni ğreniyorum 1 ay falan oldu eğitim greli. Kendime birde + olarak Dailing uygulaması yapmak istiyorum. NOT : Normal Şebeke hattından aramadan bahsetmiyorum Internet üzerinden arama. Whatsapp Viber gibi düşünülebilir. Projeyi Github'da geliştireceğim. Dileyen kişiler projeyi takip edebilirler. Github : https://github.com/MhmdAlmz Arama konusunda şuan pek bir bilgi sahibi değilim. Bildiğim veya bildiğimi sandığım birkaç birşey var WEBRTC = gerçek zamanlı yani Real Time projeler için kullanılan bir Api veya Modül pek bilgim yok. Daha nce WEBSOCKET Yazmadım yani yle geniş çaplı birşey Sadece Mesajlaşma için bir Socket yazdım. XMMP araştırdım biraz. Video ve Audio modülleri var sanırım. Daha nce byle bir proje geliştiren birileri var mıdır? Bilgi sahibi biri aydınlatsa bizi? Ben gene de araştırmaya devam edeceğim. Bulamasam bile Ekstra bilgi birikimi olur, Katılmak isteyen birileri varsa beraber de yol katedebiliriz. Gelelim en can alıcı soruya : " Bunu nasıl yapabilirim Izlemem gereken yol nedir? Çok uçuk birşey mi? Kaynak var mı Yardım edecek bir mürit varmıdır? " . Tatlı günler :) Başlayalım bakalım.. Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

valla ben de arıyorum basit bişey web üzerinde kullanmak için ama temelini kavrayamadım. webrtc bu iş için çok uygun ama temelini kavramak lazım hocam Android To Web, Web To Android, Web To Web, Android To Android yapacağım ben. Web Modülleriyle ilgili zibilyon kaynak var aslında Android'i yapamazsam Web'e birlikte bakalım yapılır web Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Hocam bi proje yapıyorum 1300 TL aldım tanıdık yani büyütüp arkadaşlarına satıcam. Yani kullanacağım kendim bir voip server yapmayacağım Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Temel mimari için biraz bilgi vereyim belki kafanda birşeyler oluşur. ncelikle PHP sevdasından vazgeç. Bu işler için gerçek programlama dilleri kullanma taraftarı olmuşumdur herzaman. PHP ile yapılmaz demiyorum muhakkak başarırsın ama zannettiğin kadar performanslı olmaz. Yapılacak işleri sırasıyla anlatıyorum. 2 adet sunucu uygulaması hazırlanacak. 1-> Notificaton server 2-> Voice Dialer server Notification serverın amacı 2 yada daha fazla client için bir buluşma ayarlamak ve doğru sunuculara ynlendirmek. Voice Dialer Server ise konuşma işlemlerini ynetecek. Web yada Android Service ilk çalıştığı zaman Notification Server a register olacak ve packet gelmesini bekleyecek. Bu aşamada HTTP protokolünü kullanmanı tavsiye ederim çünkü web ayağında websocket HTTP protokolü gibi stabil değil ve her browserda farklı davranıyor. Eline ayağına dolanır hiç gerek yok. HTTP protokolü ile Long-Term-Polling yaparak aynı işi pratik şekilde simule edebilirsin. 2 eventimiz var. Arama yapmak, yada sana arama gelmesi. Arama yapma işi çok kolay; notification sunucuna X kişisini aramak istiyorum diye packet gnderdiğinde sunucu buluşma için Voice Dialer Serverda sana uygun IP ve PORT verecek. Bu sırada da Long Term Polling yapan X kişisine de Y kişisi seni aramak istiyor şu IP ve Porta bağlan diye bilgi ulaşacak. Bu sayede 2 client randevulaştı ve işler voice dialer sunucuna kaldı. Sunucunun tek yapması gereken Clientın sıkıştırılmış olarak gnderdiği raw datayı diğer clienta pipe etmesi. İşin zor kısmı olan sıkıştırma işi devreye giriyor. Realtime sıkıştırma işlemi yapacaksın ama client resourcelarını çok tüketmeyeceksin. Yok ben sıkıştırmayayım veriyi yaldır yaldır yazayım dersen paketler parça parça gelip birleşeceği için gecikme oluşur. Telsizden teye gidemez. Unutulmaması gereken şey burda bottleneck internet bağlantısı. İnternete ne kadar az veri gnderirsen, sistem o kadar hızlı çalışır. Sıkıştırma işini codeclere bırakacaksın. Optimize edilmesi gereken çok kalem var, uyguladıkça nüne gelecektir. Kolay gelsin. Not: LTP'nin dezavantajı sunucu tarafına yük bindirir dolayısıyla notification serverın, server donanımına da bağlı olmak suretiyle tahmini 500 kişi barındırabilir aynı anda. Ayrıca android tarafında service olarak çalışacağı için şarjı hızlı bitirecektir

valla ben de arıyorum basit bişey web üzerinde kullanmak için ama temelini kavrayamadım. webrtc bu iş için çok uygun ama temelini kavramak lazım :|

Bu Server'i ücretli satan firmalar var mıdır bir SDK ile işi çzebilir miyim rneğin 200 Kişilik sip domain fiyatı ile işi halledemez miyim? O kadar Server kurup sinyalizasyon işlemleri beyim boyumu aşar. Sip server kiralaasam? bu işlemleri yaptırmak için SDK Falan yardımı yapıyorlar mı? Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

@JPriest, Bir bakıma iş sunucu tarafında bitiyor. Android sinyallerini Sunucuya ordan da Web'e veya tam tersi bir sistem işliyor. WebSocket + PHP orta seviye. NodeJs ne işe yarar her yerde karşıma çıkıyor. bir baksam mı ki bilemedim. Ama Mantığını tam kavramış değilim. Onca Sip Server Yapanlar var bu adamlar bu kadar uğraşıyor olamaz. Birde Birde SİP DOMAİN mevcut o domain'e ait verileri işleyeceğim. Mantık gene aynı mı olur? Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Bu Server'i ücretli satan firmalar var mıdır bir SDK ile işi çzebilir miyim rneğin 200 Kişilik sip domain fiyatı ile işi halledemez miyim? O kadar Server kurup sinyalizasyon işlemleri beyim boyumu aşar. Sip server kiralaasam? bu işlemleri yaptırmak için SDK Falan yardımı yapıyorlar mı? Projeyi kullanacakmısın yoksa ğrenmek için mi geliştiriyorsun? Ben 2. şık için açıklama yapmıştım yazıp kullanayım diyorsan piyasada alternatifler muhakkak vardır. Onlara bakıvereyim.

Ben kurcalamıştım zamanında biraz bu işleri. Üzerinde yeniden çalışmak istemediğim, biraz kıllı konular bana gre. İşin üstadları daha iyi açıklamalar yaparlar ama giriş mahiyetinde de olsa birkaç şey syleyebilirim ben de. ncelikle anlık kaç kişiye hizmet vereceksin? Yalnızda audio/video call/conferance seçeneklerin mi olacak yoksa instant messaging de olacak mı işin içinde? Bu işi Türkiye için mi yapacaksın? Bu soruların cevaplarına gre mimarinin kurgusu değişecektir. Sondan başlamak gerekirse Türkiye'de ne kadar olduğunu bilmediğim sayıda kişiye iletişim altyapısı sunuyorsan belli bir süre tüm iletişim loglarını tutman, bunlara hiçbir insanın erişemiyor olmasını sağlaman, mahkeme kararı ile gelen savcı/yetkili kişilere de okunabilir/dinlenebilir kayıtları sağlama zorunluluğun var. zellikle 17-25 aralık dneminden sonra.. P2P ya da Client - Server - Client tarzı yaklaşımlar var. Tüm trafiğin kaydını tutman için arada server olması gerekiyordur çok yüksek ihtimalle. Ama bunu Apache server gibi tek başına bir server olarak düşünme. NAT, ICE, STUN ve TURN kavramlarını iyi bir şekilde ğrenmek gerekiyor maalesef. Çok kabaca sylemek gerekirse, IP tabanlı bir iletişim sağladığını düşünelim 2 farklı client'ın. Her bir client da farklı ülkelerde, farklı şirketlerin local ağlarından internete çıkıyor olsunları. Türkiye'de kendi şirketinden, Japonya'daki iş yaptığın şirketin bir elemanını aradığını düşün. İki taraf da IP adreslerine baksalar 192.168. x. x gibi IP'ler grecekler. Router, Switch, Gateway, Firewall + NAT'ın arkasında iki taraf da. Dolayısıyla bu ikisinin bir şekilde birbirleriyle haberleşmeleri gerekiyor, el sıkışmaları gerekiyor. STUN ve TURN kısaca bu işi organize ediyor diyelim. Detayına bakmak lazım ama kesinlikle. Burda kısa bir yazı var: https://www.webrtc-experiment.com/docs/STUN-or-TURN.html Sadece instant messaging yapacaksan çok büyük problem yok, text based halledilir ama işin içine audio/video call da girince diğer bütün seçenekleri boş ver, WebRTC bak direkt. Hem mobil hem web'i birbiriyle konuşturacağım diyorsun çünkü. Olay burda ikiye ayrılıyor. 1- Signalling 2- Streaming. WebRTC streaming kısmını hallediyor, adı üzerinde zaten bütün audio/video stream işi için. Ama iki tableti birbiriyle konuşturmak için nce iki tarafın donanım zellikleri, codecleri, kamerası/mikrofonu var mı yok mu, varsa altyapıları, firewall / NAT vs izinleri var mı gibi kısacası orta yolu bulmaları ve o yoldan iletişim kurmalarını sağlamak gerekiyor. Bu kısma signalling deniliyor. Bunun için birden fazla seçenek var. Websockets, RESTful api, XMPP.. Websockets ile birlikte Long-Polling kavramına kesinlikle bakmak gerekli. https://bloggeek.me/siganling-protocol-webrtc/ Bir projede signalling + instant messaging kısmında rest, streaming kısmına WebRTC kullanmıştık. Başka bir tanesinde signalling + instant messaging kısmında WebSockets ve streaming kısmında yine WebRTC kullanmıştık. Turkcell'in instant messaging uygulamasında custom bir Openfire server var signalling kısmında. http://www.igniterealtime.org/projects/openfire/ Ama bildiğim kadarıyla XMPP mobil cihazlar için pek nerilmiyor. Hem performans, hem data boyutları hem de pil mrü için kronik problemleri var diye biliyorum ama teknik açıklama sorarsan bilmiyorum, aklımda byle kalmış sadece. Instant messaging için adam oturum açtı, durumu meşgule aldı, oturum kapattı gibi olaylar, grup chat, broadcast message, offline adam online olduğunda senkronizasyon gibi olayları da iyi ynetmek gerekiyor. Tabi burda bir de emoji, image, file transfer vs de sz konusu olacaktır ileride. Dediğim gibi biraz kıllı sektr telco sektrü. Tavsiyem WebSockets + WebRTC. PHP ile biraz canın yanabilir. NodeJS + Socket.io falan bak derim server side için. Opensource ya da ticari bir sürü ürün çıkmıştır piyasaya ayrıca. Her şeyini kendin yazmaya çalışırsan çook uzun zaman harcayabilirsin, bazı parçalarını dışardan temin etmek hız kazandırır. Edit: harf hatası JPriest tarafından 04/Tem/16 23:49 tarihinde düzenlenmiştir Sen hiç kaval çaldın mı?