Autobahn/Websocket

  • 11 Antworten
  • Letztes Antwortdatum
D

DoubleX87

Neues Mitglied
0
Hallo zusammen,

ich muss im Zuge einer Projektarbeit eine Android App weiterentwickeln und bin dabei nun auf ein Problem gestoßen.

Folgendes Szenario:

vorab: Die Benutzer sind in der Datenbank hinterlegt (mit userID und DeviceNr)

User A schickt mit seinem Tablet mit Hilfe der App eine Anfrage die an eine bestimmte andere Person (User B) gerichtet ist an den Server. Dort wird die Anfrage in einer DB gespeichert. (Elgg)

Diese Anfrage soll nun auf direktem Wege an den adressierten User B gesendet werden.

Möglich wäre natürlich, dass alle Tablets, die diese App geöffnet haben in gewissen Zeitabständen am Server nachfragen ob es neue Anfragen gibt. Dies ist aber nicht die Zielvorgabe.

Die App verwendet bereits die Libraries "Autobahn" (Android) und mit Hilfe dieser soll auch das genannte Problem gelöst werden.

Ich weiß nun nicht wie ich vorgehen soll bzw. wie das ganze abläuft.

Ich habe mir eigtl gedacht, dass ich es mit einem Remote Procedure Call versuche und auf dem Server eine php-Datei anspreche, welche unter anderem die EmpfängerID übergeben bekommt und mit dieser dann eine notification an den User versendet.

Leider weiß ich nicht genau wie ich dabei vorgehen soll.
Das Beispiel auf der Seite http://autobahn.ws/android
zum WAMP RPC & PubSub Client verstehe ich auch nicht ganz.

was wird z.B. bei folgendem Aufruf gemacht:

mConnection.call("http://example.com/calc#add",

Bzw. was wird dort aufgerufen? Was bedeutet "#" ?

Falls mir jemand helfen kann oder eventuell eine andere Idee hat, wie ich das ganze lösen könnte wäre ich sehr dankbar.

MfG
DoubleX87
 
Wieso nicht mit Googles Cloud Messaging?

Gesendet von meinem Nexus 10 mit Tapatalk 4
 
StefMa schrieb:
Wieso nicht mit Googles Cloud Messaging?

Ich klinke mich mal ein.

GCM würde ich auch gern benutzen und hätte sogar einen Webserver zur Verfügung - auf dem kann ich jedoch nur PHP und Python laufen lassen. Und das erforderliche "Ant", bzw. eine Java-Engine kann ich darauf nicht installieren.

Gibt es denn noch weitere Möglichkeiten, mit meinen Voraussetzungen GCM zum Laufen zu bringen?
 
Sensationell, schau ich mir am Wochenende mal detailliert an! Vielen Dank!
 
@StefMa

Was meinst du mit einer Einladung? Bei mir hatte das php Beispiel funktioniert, oder hat Google da in letzter Zeit was geändert?

Gruß
 
Hast Du denn eine bessere parat, die sich auf die alte Technik bezieht?
 
Ja, les die alte doku oO
 
Hallo zusammen,

erstmal danke für die Antworten.
Mit GCM bin ich gut zurecht gekommen.

Wenn ich über AndroidBegin - Android GCM Tutorial
meine Daten eingebe bekomme ich die notification auf mein tablet.

jetzt habe ich die dazu passende php-datei auf meinen server gelegt:

PHP:
<?php
// Message to be sent
$message = $_POST['message'];
 
// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';
 
$fields = array(
                'registration_ids'  => array($_POST['registrationIDs']),
                'data'              => array( "message" => $message ),
                );
 
$headers = array( 
                    'Authorization: key=' . $_POST['apiKey'],
                    'Content-Type: application/json'
                );
 
// Open connection
$ch = curl_init();
 
// Set the url, number of POST vars, POST data
curl_setopt( $ch, CURLOPT_URL, $url );
 
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
 
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields ) );
 
// Execute post
$result = curl_exec($ch);
 
// Close connection
curl_close($ch);
 
echo $result;
 
?>

die variablen (bzw. die POSTs) habe ich durch feste Werte ersetzt. Eben diese, die ich auch oben auf der Internetseite eingegeben habe.

Wenn ich nun die php-Datei aufrufe bekomme ich leider keine notification auf mein Tablet.
Weiß da auf Anhieb jemand was noch falsch sein könnte? Eine bestimmte Einstellung auf dem Server?

Danke!

Der ursprüngliche Beitrag von 15:23 Uhr wurde um 15:37 Uhr ergänzt:

Fehler gefunden.... hab https durch http ersetzt ;)
 
Zurück
Oben Unten