Hochschule Augsburg: Studienprojekt "Montagsmaler" mit Crossbar/Autobahn

#1

Hallo Herr Oberstein,

···

vielen lieben Dank für Ihr nettes Telefonat vom 26.03.14. Wir studieren im 4 Semester interaktive Medien an der Hochschule Augsburg und wollen für unser Studienprojekt “Montagsmaler”, bestehend aus einer Zeichenfläche (Canvas, JS) und einem Chat, mit Crossbar/Autobahn arbeiten, um eine Live-Übertragung der Daten zu gewehrleisten! Vorweg möchten wir sagen, dass wir keinerlei Ahnung, sprich Laien sind, die zwar in den letzten Semestern mit Java, Javascript, Pyhton, HTML/CSS und aktuell Datenbanken beschäftigt waren/sind, wir aber keine Ahnung haben, wie wir die einzelnen Komponenten (JS, Python etc.) zusammenfügen müssen, um am Ende Server- und Client-Seite vorliegen zu haben. Anbei ein paar Fragen zu Crossbar:

  1. Crossbar wurde installiert wie hier beschrieben und gestartet. Welche nächsten Schritte müssen nun vorgenommen werden? Was brauchen wir noch? Was muss noch installiert werden? Wo werden die Daten bzw. die Ansicht (z.B. unsere Spiele-Anwendung in HTML und JS) für den Client abgelegt und aufgerufen? Wo finden wir die Datenstruktur, die bearbeitet werden kann?

  2. Wir haben versucht die DEMO herunterzuladen wie hier beschrieben, jedoch können wir “Restart the server” und die angegebenen Codezeilen nicht in unserer Shell (cmd) eingeben. “$” wird nicht erkannt?! Wir sind überfragt…

  3. Sie sehen wir haben derzeit grundsätzliche Probleme, was wir nach der Installation mit Crossbar anstellen sollen :wink: Klar ist, das wir unseren Server haben, aber wie bekommen wir jetzt Server- und Client-Komponenten zusammen bzw. wie müssen wir jetzt zukünftig arbeiten? Gibt es eine Browser-Oberfläche (wie bei web2py) in der wir unsere Seiten einrichten können? Oder müssen wir alles über eine “Shell” ansteuern? Wir haben keine Ahnung, wie wir jetzt unsere Anwendung im Browser anzeigen lassen können bzw. ablegen und bearbeiten können… (wir hoffen das Problem wird klarer?)

Ich danke Ihnen schon jetzt für Ihre Geduld! Leider haben wir überhaupt keine Ahnung, wie wir derzeit an die Sache herangehen müssen. Unser Studiengang setzt sich aus Informatik und Gestaltung zusammen. Wir entschuldigen uns im Voraus für die eine oder andere “dumme Frage” :wink:

Gruß,

Katrin und Nicole
Interakive Medien IV

0 Likes

#2

Hallo Fr. Riedelbauch,

vorab, falls Sie nichts einzuwenden haben: wie wärs mit "Du"? :wink:

> vielen lieben Dank für Ihr nettes Telefonat vom 26.03.14. Wir studieren

im 4 Semester interaktive Medien an der Hochschule Augsburg und wollen
für unser Studienprojekt "Montagsmaler", bestehend aus einer
Zeichenfläche (Canvas, JS) und einem Chat, mit Crossbar/Autobahn
arbeiten, um eine Live-Übertragung der Daten zu gewehrleisten! Vorweg

Die "Montagsmaler" Idee ist super! Und insb. wg. der Anforderung Echtzeitkommunikation im Web perfekt geeignet für WebSocket und Crossbar/Autobahn.

1. Crossbar wurde installiert wie hier
<https://github.com/crossbario/crossbar/wiki/Installation-on-Windows>
beschrieben und gestartet. Welche nächsten Schritte müssen nun
vorgenommen werden? Was brauchen wir noch? Was muss noch installiert
werden? Wo werden die Daten bzw. die Ansicht (z.B. unsere
Spiele-Anwendung in HTML und JS) für den Client abgelegt und aufgerufen?
Wo finden wir die Datenstruktur, die bearbeitet werden kann?

Habe eben hier etwas zusammengeschrieben:

https://github.com/crossbario/crossbar/wiki/HTML5-Application-Components

Nächste Schritte .. würde das hier vorschlagen:

1. obiges Beispiel selbst ausprobieren
2. dieses Beispiel Stück-für-Stück modifzieren:

- Canvas einbauen,
- Echtzeit Sync einbauen sodaß "malen" auf Canvas zu "Publish" von entsprechenden Events führt (wobei die Events die "gemalten" Koordinaten o.ä. enthalten).
- empfangene Events entsprechend auf der Canvas "nachmalen"

2. Wir haben versucht die DEMO herunterzuladen wie hier
<https://github.com/crossbario/crossbardemo> beschrieben, jedoch können
wir "*Restart* the server" und die angegebenen Codezeilen nicht in
unserer Shell (cmd) eingeben. "$" wird nicht erkannt?! Wir sind überfragt...

Die Shell Commands die in den Wiki Pages aufgeführt sind, sind für "Unix-artige Shells".

Das "$" ist der "Shell Prompt" und wird nicht mit eingegeben.

Unter Windows würde ich dringend empfehlen einen vernünftige Shell zu installieren. "Windows CMD" ist aus den frühen 90ern;)

D.h. das hier installieren:

http://msysgit.github.io/

Das installiert "Git" sowie eine Bash-artige Shell.

Bzgl. Git: würde ich auch dringend empfehlen für die Code Entwicklung ein gemeinsames Repository aufzusetzen.

Bei https://github.com/ Euch anmelden, und ein Repo für "Montagsmaler" anlegen, etc etc

Bzgl. "crossbardemos": ich schreib eine Wiki Page dazu ..

3. Sie sehen wir haben derzeit grundsätzliche Probleme, was wir nach der
Installation mit Crossbar anstellen sollen :wink: Klar ist, das wir unseren
Server haben, aber wie bekommen wir jetzt Server- und Client-Komponenten
zusammen bzw. wie müssen wir jetzt zukünftig arbeiten? Gibt es eine
Browser-Oberfläche (wie bei web2py) in der wir unsere Seiten einrichten
können? Oder müssen wir alles über eine "Shell" ansteuern? Wir haben
keine Ahnung, wie wir jetzt unsere Anwendung im Browser anzeigen lassen
können bzw. ablegen und bearbeiten können... (wir hoffen das Problem
wird klarer?)

Was die HTML/JS Oberfläche angeht (und hiermit würde ich starten): das sind einfach Dateien welche von Crossbar als Web Server gehostet werden.

Sie/Ihr können/könnt diese HTML und JS Dateien mit jedem blg. Editor editieren. z.B. Sublime (http://www.sublimetext.com/)

Ein Crossbar Knoten muss natürlich wissen, von welchem Verzeichnis aus es Dateien hosten soll. Dies geschieht über die Konfigurationsdatei

.crossbar/config.json

in der (per default) z.B. folgendes steht:

                "paths": {
                   "/": {
                      "type": "static",
                      "directory": ".."
                   },
                   ...
                }

was bedeutet, daß das Verzeichnis ".." (relativ zur config.json Datei) das "Web Root" Verzeichnis sein soll.

Genaueres steht hier:

https://github.com/crossbario/crossbar/wiki/Static-Web-Service

Ich danke Ihnen schon jetzt für Ihre Geduld! Leider haben wir überhaupt
keine Ahnung, wie wir derzeit an die Sache herangehen müssen. Unser
Studiengang setzt sich aus Informatik und Gestaltung zusammen. Wir
entschuldigen uns im Voraus für die eine oder andere "dumme Frage" :wink:

Überhaupt kein Problem .. gibt keine "dummen" Fragen;)

Ist klar daß wir hier mehrere Iterationen brauchen werden bis das Gesamtbild klar wird.

Ich würde dennoch vorschlagen Stückchenweise vorzugehen. Wenn ich Euch das Gesamtbild mit allen Details jetzt gleich auf einmal erkläre, wäre das möglicherweise etwas frustierend ..

"Canvas malen mit Echtzeit Sync" wäre eine schönes erstes Erfolgserlebnis .. und dann kann man die anderen Dinge angehen ..

vg
Tobias

···

Gruß,

Katrin und Nicole
Interakive Medien IV

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com
<mailto:autobahnws+...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout.

0 Likes

#3

2. Wir haben versucht die DEMO herunterzuladen wie hier
<https://github.com/crossbario/crossbardemo> beschrieben, jedoch können
wir "*Restart* the server" und die angegebenen Codezeilen nicht in
unserer Shell (cmd) eingeben. "$" wird nicht erkannt?! Wir sind überfragt...

Ok, habe das README überarbeitet:

https://github.com/crossbario/crossbardemo/blob/master/README.md

Funktioniert das für Euch?

vg
Tobias

0 Likes

#4

Hallo Tobias,

selbstverständlich können wir uns duzen :wink:

Vielen lieben dank für deine ersten Tipps! Anbei findest du unseren aktuellen Stand zu unserem Projekt:
https://github.com/FHAux/Montagsmaler

Wir haben unsere Zeichenfläche implementiert und können per Mousedown etc. auf der Zeichenfläche zeichnen. Jedoch ist uns unklar, wieso er die Zeichnung nicht auf dem zweiten Browserfenster ausgibt. Die Daten werden an den Client weitergebenen (s. Konsolenausgabe) aber nicht angezeigt!? Wo ist der Fehler?

Gruß,
Kati & Nici

0 Likes

#5

Hallo Katri und Nici,

Hallo Tobias,

selbstverständlich können wir uns duzen :wink:

Vielen lieben dank für deine ersten Tipps! Anbei findest du unseren
aktuellen Stand zu unserem Projekt:
https://github.com/FHAux/Montagsmaler

Cool! Das ist zur Zusammenarbeit immens nützlich .. konnte es gleich clonen und testen. War nur ein Mini-Problem (siehe unten) .. das ganze funktioniert bei mir jetzt: malen ist synchron über alle Instanzen;) Nett!

Wir haben unsere Zeichenfläche implementiert und können per Mousedown
etc. auf der Zeichenfläche zeichnen. Jedoch ist uns unklar, wieso er die
Zeichnung nicht auf dem zweiten Browserfenster ausgibt. Die Daten werden
an den Client weitergebenen (s. Konsolenausgabe) aber nicht angezeigt!?
Wo ist der Fehler?

Das Problem war minimal:

https://github.com/oberstet/Montagsmaler/commit/02598255479ee305b3b44eb989e2ea9795527a61

Event handler in AutobahnJS haben folgende fixe Signatur:

function myEventHandler(args, kwargs, details);

Hierbei ist "args" ein array mit den positionalen Argumenten der Event Payload.

M.a.W.: wenn man einen Event published mit args = [pos], dann muss "pos" via args[0] angesprochen werden.

Hab noch ein paar Kleinigkeiten gemacht (um es zu testen) .. wenn Ihr mögt könnt Ihr das einfach mergen:

https://github.com/FHAux/Montagsmaler/pull/1

Eine passende Crossbar Konfiguration ist jetzt auch im Repo, sodaß Ihr die App einfach mit

crossbar start

starten könnt. Ach ja: bitte Crossbar updaten :

pip install --upgrade crossbar

auf version 0.9.3 .. die Config ist für die neue Version und da haben sich Kleinigkeiten geändert.

Wenn's bei Euch läuft könnt Ihr ja ein bisschen mit diesem Stand experimentieren. Perspektivisch wär auch eine kleine Liste mit den grob Features/Anfordergunen nützlich um die weitere Implementierung zu planen ..

Hoffe Euch hilft das schonmal weiter;)

LG,
Tobias

···

Am 16.04.2014 11:06, schrieb Katrin Riedelbauch:

Gruß,
Kati & Nici

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com
<mailto:autobahnws+...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout.

0 Likes

#6

Hallo Tobias,

wir haben ein kleines Problem! Wir bekommen beide beim Update "pip install --upgrade crossbar
" eine Fehlermeldung (s. Screenshot unten).

Abgesehen davon können wir jetzt nicht mehr den Server starten “crossbar start” und weiterarbeiten :frowning:

0 Likes

#7

Hallo Tobias,

wir haben ein kleines Problem! Wir bekommen beide beim Update "pip
install --upgrade crossbar " eine Fehlermeldung (s. Screenshot unten).

Mmh. Vielleicht am schnellesten: probier einfach mal Installation aus dem Repo:

git clone git@github.com:crossbario/crossbar.git
cd crossbar/crossbar
python setup.py install

···

Am 18.04.2014 12:47, schrieb Katrin Riedelbauch:

Abgesehen davon können wir jetzt nicht mehr den Server starten "crossbar
start" und weiterarbeiten :frowning:

<https://lh6.googleusercontent.com/-Tr03R-m8Cp4/U1ECLmZGlJI/AAAAAAAAABU/ZLpQisMIWog/s1600/exeption_crossbar.jpg>

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com
<mailto:autobahnws+...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout.

0 Likes

#8

Abgesehen davon können wir jetzt nicht mehr den Server starten "crossbar
start" und weiterarbeiten :frowning:

Falls Ihr noch Probleme mit Windows Installation habt .. ich habe das Installationsbundle

https://crossbar.io.s3.amazonaws.com/download/crossbar_deps_py27_win32.zip

https://github.com/crossbario/crossbar/wiki/Installation-on-Windows

aktualisiert und gerade auf einer frischen Windows XP VM getestet.

vg
/Tobias

0 Likes

#9

Hallo Tobias,

vielen dank für dein Update zum Windows-Problem :smiley:
Wir werden uns das mal ansehen :wink:

Ansonsten wollte wir mal fragen, wie wir jetzt weiter vorgehen sollen?
Wir würden nämlich gerne unsere Registrierung bzw. Login für das Spiel einrichten.
Deshalb unsere Frage: Wie können wir mit Crossbar eine Verbindung zur PosgreSQL-Datenbank herstellen bzw. diese ansprechen, um somit unser SQL-Datei mit der gewünschten Datenbank (Tabellen) einzulesen? Wie macht man das?
Denn wenn man sich registriert hat möchten wir, dass man als Spieler weitere Mitspieler in eine Spielgruppe einladen kann, indem man die bereits eingeloggten Mitspieler anfragt. Sprich wir brauchen eine Liste von den bereits eingeloggten Mitspielern und den eigenen Spiele-Account. Diese Daten müssen ja irgendwie abgelegt und abrufbar sein in einer Datenbank :wink: Jedoch wissen wir nicht, wie wir die Datenbank mit Crossbar verknüpfen müssen!? :stuck_out_tongue:

Gruß,
Kati und Nici

0 Likes

#10

Hallo Tobias,

vielen dank für dein Update zum Windows-Problem :smiley:
Wir werden uns das mal ansehen :wink:

Ansonsten wollte wir mal fragen, wie wir jetzt weiter vorgehen sollen?
Wir würden nämlich gerne unsere Registrierung bzw. Login für das Spiel
einrichten.
Deshalb unsere Frage: Wie können wir mit Crossbar eine Verbindung zur
PosgreSQL-Datenbank herstellen bzw. diese ansprechen, um somit unser
SQL-Datei mit der gewünschten Datenbank (Tabellen) einzulesen? Wie macht
man das?
Denn wenn man sich registriert hat möchten wir, dass man als Spieler
weitere Mitspieler in eine Spielgruppe einladen kann, indem man die
bereits eingeloggten Mitspieler anfragt. Sprich wir brauchen eine Liste
von den bereits eingeloggten Mitspielern und den eigenen Spiele-Account.
Diese Daten müssen ja irgendwie abgelegt und abrufbar sein in einer
Datenbank :wink: Jedoch wissen wir nicht, wie wir die Datenbank mit Crossbar
verknüpfen müssen!? :stuck_out_tongue:

Hallo Kati und Nici,

ich würde vorschlagen Euch zunächst mit dem Thema PostgreSQL und Python im Kontext von Crossbar.io anzufreunden. Und das Thema Authentifizierung/Authorisierung danach anzugehen.

Hierzu könntet Ihr das Beispiel

https://github.com/tavendo/AutobahnPython/tree/master/examples/twisted/wamp/wamplet/votegame

welches SQLite nutzt auf PostgreSQL umzubauen. Step 2 könnte sein daß Ihr die Verspeicherung von allg. Spieldaten testet ...

vg
Tobias

···

Am 28.04.2014 15:54, schrieb Katrin Riedelbauch:

Gruß,
Kati und Nici

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com
<mailto:autobahnws+...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout.

0 Likes

#11

Hallo Kati und Nici,

und, seid Ihr weitergekommen bzw. hat meine letzte Mail geholfen? Falls nein - wo hakts? Vielleicht kann ich helfen ..

vg
Tobias

···

Am 28.04.2014 15:54, schrieb Katrin Riedelbauch:

Hallo Tobias,

vielen dank für dein Update zum Windows-Problem :smiley:
Wir werden uns das mal ansehen :wink:

Ansonsten wollte wir mal fragen, wie wir jetzt weiter vorgehen sollen?
Wir würden nämlich gerne unsere Registrierung bzw. Login für das Spiel
einrichten.
Deshalb unsere Frage: Wie können wir mit Crossbar eine Verbindung zur
PosgreSQL-Datenbank herstellen bzw. diese ansprechen, um somit unser
SQL-Datei mit der gewünschten Datenbank (Tabellen) einzulesen? Wie macht
man das?
Denn wenn man sich registriert hat möchten wir, dass man als Spieler
weitere Mitspieler in eine Spielgruppe einladen kann, indem man die
bereits eingeloggten Mitspieler anfragt. Sprich wir brauchen eine Liste
von den bereits eingeloggten Mitspielern und den eigenen Spiele-Account.
Diese Daten müssen ja irgendwie abgelegt und abrufbar sein in einer
Datenbank :wink: Jedoch wissen wir nicht, wie wir die Datenbank mit Crossbar
verknüpfen müssen!? :stuck_out_tongue:

Gruß,
Kati und Nici

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com
<mailto:autobahnws+...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout.

0 Likes

#12

Hallo Tobias,

wir sind leider noch nicht dazugekommen… o.O Werden uns aber morgen wieder unserem Spiel zuwenden :wink: Wir melden uns!

Vielen lieben Dank für die Nachfrage :wink:

Gruß,
Kati & Nici

0 Likes

#13

Hallo Tobias,

unseren aktuellen Stand zum Montagsmaler findest du hier:
http://ia-netz.informatik.fh-augsburg.de:8080/

Wir sind jedoch schon weiter (s. GitHub):
https://github.com/FHAux/Montagsmaler

Hier haben wir folgendes Problem:

  1. Datenbank wird angelegt (CREATE TABLE etc.)
  2. Abfrage im Formular auf der index.html soll die Daten per Javascript und Python (INSERT INTO VALUE: admin:copycat) abgleichen und bei Übereinstimmung auf das Spiel (copycat.html) weiterleiten.
  3. Jedoch versuchen wir gerade vergebens eine Abfrage mit dem “backend.py” zu verknüpfen und bekommen ständig die Fehlermeldung (Konsole: das die “procedure” nicht gefunden wurde… de.copycat.check_login)

Wir vermuten, dass die config.json noch dementsprechend angepasst werden muss?! Jedoch wissen wir nicht wie! Aus deinem letzten Beispiel “Votegames” haben wir die Einstellungen einfach übernommen. Hierbei müssen wir aber auch die backend.py separat starten…
Frage hierzu: Ist das auch ohne den Befehl “python backend.py” möglich, sprich ein automatischen Aufruf der backend.py über die config.js?

PS. Die Zugangsdaten zur Datenbank haben wir in der backend.py entfernt (##Platzhalter). Falls du diese noch benötigst, schick mir bitte eine Mail, dann sende ich dir die Daten zu :wink:

Gruß,
Kati & Nici

0 Likes

#14

Hallo Katrin,

3. Jedoch versuchen wir gerade vergebens eine Abfrage mit dem
"backend.py" zu verknüpfen und bekommen ständig die Fehlermeldung
(Konsole: das die "procedure" nicht gefunden wurde...
de.copycat.check_login)

Die procedure muß registriert werden um später aufgerufen werden zu können. Zur Registrierung reicht der Decorator ("@wamp.procedure") nicht aus, sondern es muß auf "self.register(..)" aufgerufen werden. Dies geschieht meistens in onJoin() .. aber die Zeile ist auskommentiert:

https://github.com/FHAux/Montagsmaler/blob/master/backend.py#L235

Wir vermuten, dass die config.json noch dementsprechend angepasst werden
muss?! Jedoch wissen wir nicht wie! Aus deinem letzten Beispiel
"Votegames" haben wir die Einstellungen einfach übernommen. Hierbei
müssen wir aber auch die backend.py separat starten...
Frage hierzu: Ist das auch ohne den Befehl "python backend.py" möglich,
sprich ein automatischen Aufruf der backend.py über die config.js?

Yep, das geht, und Ihr bekommt folgendermassen eine valide/aktuelle config, und zwar eine die die Python Komponente unter Crossbar mitstartet:

crossbar init --template hello:python --appdir hello
cd hello
crossbar start

Siehe: https://github.com/crossbario/crossbar/wiki/Quick-Start#create-an-app

Setzt aktuelles Crossbar vorraus: pip install --update crossbar

···

==

Ihr könnt Euch die Config aus den generierten Files rauspicken und anpassen, oder gleich Euren Code bzw. das Repository bzgl. Filestruktur so wie in dem Beispiel anpassen. Damit habt Ihr dann auch gleich ein Package das sich wie jedes in Python installieren läßt.

PS. Die Zugangsdaten zur Datenbank haben wir in der backend.py entfernt
(##Platzhalter). Falls du diese noch benötigst, schick mir bitte eine
Mail, dann sende ich dir die Daten zu :wink:

Ok;) Danke, aber schaut mal wie Ihr mit obigen Hinweisen weiterkommt und schreibt dann nochmal.

vg,
Tobias

Gruß,
Kati & Nici

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com
<mailto:autobahnws+...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout.

0 Likes

#15

Hallo Tobias,

hat soweit alles funktioniert, danke.
Jetzt haben wir nur folgendes Problem:

Wir wollen oben links in unserem Spiel anzeigen lasse, welche Spieler aktuell angemeldet sind. Dafür haben wir in unsere Datenbanktabelle einen Boolean “eingeloggt” eingefügt, den wir beim login auf True setzen. Jetzt fehlt uns nur eine passende Funktion, die ausgeführt wird, wenn der Client die Verbindung zum Server abbricht, so dass wir diesen Wert wieder auf False setzen können. Leider haben wir eine solche bisher nicht gefunden. Die Methode onDisconnect scheint nicht ausgeführt zu werden.
Gibt es da eine andere Methode?
Oder ist der Ansatz an sich eher unpraktisch?

Gruß,
Kati & Nici

0 Likes

#16

Hallo Kati,

Hallo Tobias,

hat soweit alles funktioniert, danke.
Jetzt haben wir nur folgendes Problem:
Wir wollen oben links in unserem Spiel anzeigen lasse, welche Spieler
aktuell angemeldet sind. Dafür haben wir in unsere Datenbanktabelle
einen Boolean "eingeloggt" eingefügt, den wir beim login auf True
setzen. Jetzt fehlt uns nur eine passende Funktion, die ausgeführt wird,
wenn der Client die Verbindung zum Server abbricht, so dass wir diesen
Wert wieder auf False setzen können. Leider haben wir eine solche bisher
nicht gefunden. Die Methode onDisconnect scheint nicht ausgeführt zu werden.
Gibt es da eine andere Methode?
Oder ist der Ansatz an sich eher unpraktisch?

Der empfohlene Ansatz nutzt dies hier:

https://github.com/crossbario/crossbar/wiki/Session-Metaevents

Eure Backend Komponente kann sich auf die Metaevents abbonieren, und die DB entsprechend Updaten.

Die Backend Komponente der App ist ja (normalerweise) immer verbunden.

Macht das Sinn für Euch?

VG
Tobias

···

Am 04.07.2014 14:52, schrieb Katrin Riedelbauch:

Gruß,
Kati & Nici

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com
<mailto:autobahnws+...@googlegroups.com>.
To post to this group, send email to autob...@googlegroups.com
<mailto:autob...@googlegroups.com>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/autobahnws/1f90f9b3-fab6-4323-ac0e-751d16a84bf4%40googlegroups.com
<https://groups.google.com/d/msgid/autobahnws/1f90f9b3-fab6-4323-ac0e-751d16a84bf4%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

0 Likes

#17

Hallo Tobias,

danke für die schnelle Antwort.
Ich hab das gleich mal probiert, aber leider löst das unser Problem auch nicht.
Dieses Metaevent wird leider nicht ausgeführt, oder zumindest nicht, wenn ein Spieler die Seite einfach schließt.

Gruß
Kati & Nici

0 Likes

#18

Ich habe grade nochmal drüber nachgedacht…
Die Session ist ja ein Attribut von connection, welche in AppCopycat.js erstellt wird.
Jetzt müsste aber sobald ich diese Seite schließe diese JavaScript-Datei quasi “verworfen” werden,
sprich die connection und so auch die session dürften nicht mehr existieren, wodurch dieses metaevent ja eigentlich abgefeuert werden müsste.

Ist mein Verständnis soweit richtig?

Dann verstehe ich leider nicht, wieso es jetzt nicht funktioniert^^

···

Am Samstag, 5. Juli 2014 20:48:50 UTC+2 schrieb Katrin Riedelbauch:

Hallo Tobias,

danke für die schnelle Antwort.
Ich hab das gleich mal probiert, aber leider löst das unser Problem auch nicht.
Dieses Metaevent wird leider nicht ausgeführt, oder zumindest nicht, wenn ein Spieler die Seite einfach schließt.

Gruß
Kati & Nici

0 Likes

#19

Hallo Kati,

hab's grad' nochmal getestet .. funktioniert wie erwartet (siehe screenshot):

sowohl bei explizitem schliessen einer client verbindung (in AutobahnJS mittels connection.close()

als auch bei indirektem schliessen der verbindung durch schliessen des browser tabs.

das hier hab ich gemacht:

crossbar init --template hello:python --appdir hello

dann hello.py / index.html ersetzt durch den beispielcode (siehe screenshot).

vielleicht könnt ihr versuchen das so nochmal nachzuvollziehen bevor ihr den code in eure app übernehmt.

vg
/Tobias

···

Am 05.07.2014 20:56, schrieb Katrin Riedelbauch:

Ich habe grade nochmal drüber nachgedacht...
Die Session ist ja ein Attribut von connection, welche in AppCopycat.js
erstellt wird.
Jetzt müsste aber sobald ich diese Seite schließe diese JavaScript-Datei
quasi "verworfen" werden,
sprich die connection und so auch die session dürften nicht mehr
existieren, wodurch dieses metaevent ja eigentlich abgefeuert werden müsste.

Ist mein Verständnis soweit richtig?
Dann verstehe ich leider nicht, wieso es jetzt nicht funktioniert^^

Am Samstag, 5. Juli 2014 20:48:50 UTC+2 schrieb Katrin Riedelbauch:

    Hallo Tobias,

    danke für die schnelle Antwort.
    Ich hab das gleich mal probiert, aber leider löst das unser Problem
    auch nicht.
    Dieses Metaevent wird leider nicht ausgeführt, oder zumindest nicht,
    wenn ein Spieler die Seite einfach schließt.

    Gruß
    Kati & Nici

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com
<mailto:autobahnws+...@googlegroups.com>.
To post to this group, send email to autob...@googlegroups.com
<mailto:autob...@googlegroups.com>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/autobahnws/17c1d850-6487-46f3-a51f-ee62faf3da24%40googlegroups.com
<https://groups.google.com/d/msgid/autobahnws/17c1d850-6487-46f3-a51f-ee62faf3da24%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

0 Likes

#20

Hallo Tobias,

ich habe festgestellt, mein Fehler war, dass ich die Funktion offenbar nicht außerhalb der onJoin-Funktion definieren darf.
Zuvor hatte ich diesen Code:

def ausloggen(self):

def run(txn):

txn.execute("UPDATE spieler SET eingeloggt = FALSE WHERE nickname = %s", [self.nutzername])

return self.db.runInteraction(run)

@inlineCallbacks

def onJoin(self, details):

try:

yield self.subscribe(self.ausloggen, "wamp.metaevent.session.on_leave")

Bei meinen anderen Funktionen hatte das geklappt, deswegen war ich verwirrt, dass es diesmal nicht geklappt hat.
Naja letztendlich, habe ich das Problem allerdings doch mit window.onbeforeunload gelöst.

Vielen Dank trotzdem

Gruß
Kati & Nici
0 Likes