Hochschule Augsburg: Studienprojekt "Montagsmaler" mit Crossbar/Autobahn

193 views
Skip to first unread message

Katrin Riedelbauch

unread,
Apr 2, 2014, 6:18:30 AM4/2/14
to autob...@googlegroups.com
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 ;) 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" ;)

Gruß,

Katrin und Nicole
Interakive Medien IV


Tobias Oberstein

unread,
Apr 2, 2014, 8:28:13 AM4/2/14
to autob...@googlegroups.com
Hallo Fr. Riedelbauch,

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

> 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 ;) 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" ;)

Ü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.

Tobias Oberstein

unread,
Apr 2, 2014, 8:56:24 AM4/2/14
to autob...@googlegroups.com
> 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

Katrin Riedelbauch

unread,
Apr 16, 2014, 5:06:18 AM4/16/14
to autob...@googlegroups.com
Hallo Tobias,

selbstverständlich können wir uns duzen ;)

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

Tobias Oberstein

unread,
Apr 17, 2014, 9:12:13 AM4/17/14
to autob...@googlegroups.com
Hallo Katri und Nici,

Am 16.04.2014 11:06, schrieb Katrin Riedelbauch:
> Hallo Tobias,
>
> selbstverständlich können wir uns duzen ;)
>
> 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

>
> Gruß,
> Kati & Nici

Katrin Riedelbauch

unread,
Apr 18, 2014, 6:47:56 AM4/18/14
to autob...@googlegroups.com
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 :(

Tobias Oberstein

unread,
Apr 18, 2014, 7:09:13 AM4/18/14
to autob...@googlegroups.com
Am 18.04.2014 12:47, schrieb Katrin Riedelbauch:
> 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 g...@github.com:crossbario/crossbar.git
cd crossbar/crossbar
python setup.py install

>
> Abgesehen davon können wir jetzt nicht mehr den Server starten "crossbar
> start" und weiterarbeiten :(
>
> <https://lh6.googleusercontent.com/-Tr03R-m8Cp4/U1ECLmZGlJI/AAAAAAAAABU/ZLpQisMIWog/s1600/exeption_crossbar.jpg>

Tobias Oberstein

unread,
Apr 20, 2014, 1:16:40 PM4/20/14
to autob...@googlegroups.com
> Abgesehen davon können wir jetzt nicht mehr den Server starten "crossbar
> start" und weiterarbeiten :(

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



Katrin Riedelbauch

unread,
Apr 28, 2014, 9:54:09 AM4/28/14
to autob...@googlegroups.com
Hallo Tobias,

vielen dank für dein Update zum Windows-Problem :D
Wir werden uns das mal ansehen ;)

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 ;) Jedoch wissen wir nicht, wie wir die Datenbank mit Crossbar verknüpfen müssen!? :p

Gruß,
Kati und Nici

Tobias Oberstein

unread,
May 5, 2014, 5:21:57 AM5/5/14
to autob...@googlegroups.com
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

>
> Gruß,
> Kati und Nici

Tobias Oberstein

unread,
May 13, 2014, 4:03:58 PM5/13/14
to autob...@googlegroups.com
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:

Katrin Riedelbauch

unread,
May 20, 2014, 9:50:22 AM5/20/14
to autob...@googlegroups.com
Hallo Tobias,

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

Vielen lieben Dank für die Nachfrage ;)

Gruß,
Kati & Nici

Katrin Riedelbauch

unread,
Jun 23, 2014, 8:18:28 AM6/23/14
to autob...@googlegroups.com
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 ;)

Gruß,
Kati & Nici


Tobias Oberstein

unread,
Jun 23, 2014, 6:32:35 PM6/23/14
to autob...@googlegroups.com
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 ;)

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

vg,
Tobias

>
> Gruß,
> Kati & Nici

Katrin Riedelbauch

unread,
Jul 4, 2014, 8:52:00 AM7/4/14
to autob...@googlegroups.com
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 

Tobias Oberstein

unread,
Jul 4, 2014, 9:33:02 AM7/4/14
to autob...@googlegroups.com
Hallo Kati,
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

>
> 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>.

Katrin Riedelbauch

unread,
Jul 5, 2014, 2:48:50 PM7/5/14
to autob...@googlegroups.com
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

Katrin Riedelbauch

unread,
Jul 5, 2014, 2:56:24 PM7/5/14
to autob...@googlegroups.com
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^^

Tobias Oberstein

unread,
Jul 6, 2014, 11:52:48 AM7/6/14
to autob...@googlegroups.com
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
> --
> 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>.
Clipboard01.png

Katrin Riedelbauch

unread,
Jul 12, 2014, 8:18:36 AM7/12/14
to autob...@googlegroups.com
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

Tobias Oberstein

unread,
Jul 15, 2014, 7:22:37 AM7/15/14
to autob...@googlegroups.com
Hi Kati,

> ich habe festgestellt, mein Fehler war, dass ich die Funktion offenbar
> nicht außerhalb der onJoin-Funktion definieren darf.

doch, schon ..

> Zuvor hatte ich diesen Code:
>
> def ausloggen(self):

probiers mal mit:

def auslogged(self, details):

könnte das problem sein. aber es geht definitiv.

vg
/Tobias

Reply all
Reply to author
Forward
0 new messages