Android Instant Messaging

R

Rackor

Neues Mitglied
0
Hallo

In meiner app möchte ich als feature einen Instant messaging chat einbauen. er soll ähnlich wie whatsapp or fb messenger sein. hierbei kommt bei mir jedoch die frage auf, wie die communication bzw. das versenden der nachrichten richtig implementiert werden soll. datenaustausch soll zw. dem android device und einem webserver mit sql datenbank geschehen

1.) simpler nachrichten austausch via http? würde vermuten dies wäre recht langsam und nicht sehr effizient?
2.) via sockets? kenne mich hierbei nicht sehr gut aus, habe jedoch gelesen dass hierbei Probleme mit den IP's auftreten, da diese ja nicht statisch sind.

also ich hoffe es kommt gut rüber auf was meine Frage abzielt und hoffe auf ein paar Tipps bzw. Ratschläge was so die besten Methoden sind bei einer Isntant messaging Chat app den nachrichten transport zu implementieren
 
Schau doch einfach mal wie es die anderen machen. Dabei kann man gut lernen.
TextSecure ist z.B. GPL. Und es gibt vermutlich noch viele andere mit Quellcode (Telegram z.B.).

cu
 
Ich denke es geht mittels Sockets, zumindest würde ich das so machen. Dein Server hat eine bekannte IP, an dem du dich immer anmeldest, wenn du deine App startest. Und deine App teilt dem Server dann deine aktuelle IP mit. Wenn dir nun jemand schreibt, schickt dieser jemand die Nachricht an den Server und der leitet an deine IP / App weiter. Ob man eine direkt-Verbindung zwischen 2 Teilnehmern hinbekommt, weiß ich nicht. Aber ich denke der Weg über den Server hat noch einige Vorteile wie z.B. zwischenspeichern der Nachricht, wenn der Empfänger offline ist usw.
 
Ich denke es geht mittels Sockets, zumindest würde ich das so machen. Dein Server hat eine bekannte IP, an dem du dich immer anmeldest, wenn du deine App startest. Und deine App teilt dem Server dann deine aktuelle IP mit. Wenn dir nun jemand schreibt, schickt dieser jemand die Nachricht an den Server und der leitet an deine IP / App weiter. Ob man eine direkt-Verbindung zwischen 2 Teilnehmern hinbekommt, weiß ich nicht. Aber ich denke der Weg über den Server hat noch einige Vorteile wie z.B. zwischenspeichern der Nachricht, wenn der Empfänger offline ist usw.

Halte ich für gaaaanz böse... wurde hier aber auch schon 10000 mal besprochen....
 
Ich würde einen Server nur nehmen, damit sich die Clients finden können, die eigentliche Verbindung bauen die untereinander auf, damit keiner dazwischen steht. Wie das dann mit Tunneln und etweiiger Sicherheit aussieht, ist jedem selber überlassen, kommt ja auf die Daten an.
 
Das funktioniert aber nicht in vielen deutschen Mobilfunknetzen.
Bei Vodafone bekomme ich z.B. keine öffentliche IP.

Wenn beide also nur eine "LAN" IP haben können die sich nicht gegenseitig verbinden.
Dazu müsste mindestens einer eine öffentliche IP haben.
(Das problem dürfte auch in vielen WLANs zu finden sein.)

Ich halte das Konzept zwar für gut, aber auf Mobilgeräten die sich sehr oft in verschiedenen Netzen aufhalten nicht für machbar.
Im Wlan müsste man auch in jedem Wlan in dem man ist erstmal z.B. Ports freigeben damit eine Verbindung aufgebaut werden kann.

Oder aber ich muss noch ein eigenes VPN mitliefern, in dem sich alle Clients einbuchen.
Dann hätte ich quasi ein eigenes LAN für alle Clients und die könnten sich dann gegenseitig einfach verbinden.
 
Dann bleibt aber immer noch der Akku.. was bringt mir nen "sicherer" messenger wenn der akku noch 1-2 std tot ist?!

lg.
 
was für ein Risiko bestünde bei Verwendung von Sockets?
Also hatte ursprünglich daran gedacht, per Server und mysql/php die nachrichten hin und her zu schicken, über httpclient etc...nur stelle ich mir dies nicht gerade effizient bzw. schnell vor
 
Wie schnell kannst du denn lesen ;-)

http ist nicht so langsam das es hier relevant wäre.

Und da gleich https (Zertifikat pinning nicht vergessen) nutzen zu können wäre ein weiterer Vorteil den es umsonst dazu gibt.

cu
 
rihntrha schrieb:
http ist nicht so langsam das es hier relevant wäre.
cu

meinst du "nicht so schnell" oder wie ist dies gemeint?
 
Nö, ich meinte http ist zwar nicht so schnell wie ne dauerhaft offene Verbindung, aber das ist bei einem Messenger vollkommen irrelevant. Weil das ist immer noch um Längen schneller als die Leute die Texte schreiben und lesen können.
Also es ist relativ langsam, aber nicht so langsam das es tatsächlich praktisch relevant ist.

cu
 
Hi braucht man bei Google Cloud Messaging einen Server, wenn ja wie teuer ist einer und wie groß muss er sein, bei wie vielen Nutzern?
 
Jep, man braucht einen Server. Aber die gibt es auch kostenlos. Wie z.B phpfriends.de oder bplaced.net. phpfriends ist recht gut und bietet alle möglichen Features. Oder Du lässt einen Raspberry Pi laufen. Der verbraucht nicht viel Strom.

Gesendet von meinem GT-I8150 mit der Android-Hilfe.de App
 
GCM hat allerdings ein paar Macken, weswegen es manchmal vorkommt, dass Nachrichten einige Minuten brauchen, bis sie ankommen.
 
Okay danke
Wenn man so etwas wie whatsapp machen will geht das mit gcm gut oder sollte man was eigenes machen?
 
So gut wie alle Messenger nutzen GCM. Und ich denke das wird schon irgendeinen Grund haben ;-)
Mir bekannte Ausnahmen sind Skype und der Blackberry Messenger. Das sind dann auch die die am Akku saugen ;-)

cu
 
Ich nutze GCM für QuizCast und dort kommt es ab und zu, dass die Nachrichten einfach nicht ankommen und erst mehrere Minuten später am Gerät eintreffen. Dadurch funktioniert das ganze Spiel dann nicht für die betroffenen User.
 
Danke für eure Hilfe wenn ich die erste Version veröffentliche oder Hilfe brauche melde ich mich.
 

Ähnliche Themen

M
Antworten
4
Aufrufe
1.173
swa00
swa00
5
Antworten
0
Aufrufe
1.151
586920
5
B
Antworten
4
Aufrufe
496
bb321
B
Zurück
Oben Unten