tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von CPoly
  • 1 Beitrag von einfach nur crack
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
420
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Myar Myar ist offline Mitglied Silber
    Registriert seit
    Dec 2007
    Beiträge
    79
    Hallöchen!

    Der Threadtitel klingt wahrscheinlich etwas verworren.
    Meine Frage wäre auch eigentlich erstmal, ob das was ich vor habe mit Canvas so Sinn macht.

    Mein Ziel ist es, dass ich ein Canvas Element habe und ich darin etwas mit der Maus zeichne, weitere Betrachter, die die Seite ebenfalls an ihrem Rechner an einem anderen Ort betrachten, sehen, was gezeichnet wird.

    Wäre das mit Hilfe des Canvas Element elegant umsetzbar bzw. macht es so Sinn?

    Mir würde jetzt erst nur einfallen, dass ich bei jeder Änderung am Bild, das Bild als Bilddatei auf dem Server speichere und die anderen Clients alle paar Sekunden das Bild neu laden und dann eine Änderung sehen.

    Was heißt, wenn ich mehrere Sessions habe, die gerade ein Bild malen und mehrere Unterschiedliche Betrachter, die die jeweiligen Bilder betrachten und Änderungen mitverfolgen, dass ich u.U. nen Haufen an Bilddateien auf dem Server generiere die alle paar Sekunden abgerufen werden...
    Ziemlich viel Traffic der da entsteht. Oder sehe ich das falsch? Falscher Ansatz?

    Es wäre halt schön, wenn ich das über eine Browseranwendung realisieren könnte, da noch weitere Funktionen hinzukommen und ich den Vorteil einer Browseranwendung nutzen möchte.

    Dann bin ich mal gespannt, was ihr dazu sagt

    Gruß
    Myar
     

  2. #2
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Erstmal vorweg: Das ist absolut machbar mit canvas.

    Zitat Zitat von Myar Beitrag anzeigen
    Falscher Ansatz?
    JA.



    1. Sende bloß nicht das gesamte Bild bei Änderungen zum Server, sondern nur die Änderungen! Wenn jemand einen Strich von A nach B malt, dann sende die beiden Koordinaten zum Server. Das sind dann nur ein paar Byte im Vergleich zum Megabyte.

    2. Die anderen Betrachter sollten nicht ständig nach Änderungen fragen, sondern diese einfach zugesendet bekommen.


    Mittels Node.js und Socket.io hat man eine solche demo in 30 Minuten fertig. Hier ein Workshop http://www.tutorials.de/content/1332...socket-io.html
    Myar bedankt sich. 

  3. #3
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.960
    Den zweiten Punkt, den CPoly angesprochen hat, kann man so leider nur lösen, wenn man Websockets nutzt. Ansonsten müsste man es wie bisher über AJAX und Polling lösen, was heißt, dass du seitens der Empfänger in einem bestimmten Rhythmus Anfragen an den Server senden musst, ob sich etwas geändert hat.

    Zu den Websockets: wenn du das Canvas-Element von HTML5 nutzt, kannst du allgemein davon ausgehen, dass der Browser auch Websockets unterstützt. Somit würde das Polling entfallen. Du brauchst dafür aber auch noch einen speziellen Server, den man aber auch in PHP in kurzer Zeit erstellen kann – abgesehen davon, dass man ihn nicht in PHP schreiben sollte.
    Myar bedankt sich. 
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  4. #4
    Myar Myar ist offline Mitglied Silber
    Registriert seit
    Dec 2007
    Beiträge
    79
    Hallöchen!

    Danke für eure Antworten!

    Okay, also immer abfragen, welche Koordinaten die Änderung hat - auf jeden Fall der bessere Ansatz.

    Aber es scheint so, als würde ich am Polling nicht vorbei kommen, da ich keinen root Zugriff habe um Socket.io zu installieren.

    Warum sollte man den Server nicht in PHP programmieren?
     

  5. #5
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.960
    Weil Server generell sehr viel Leistung erfordern und am besten so schnell und so gut wie möglich Zugriff auf die Speicherverwaltung haben. Außerdem ist mit PHP kein Multithreading möglich. Da PHP aber interpretiert wird, ist dies nicht möglich. Deshalb werden Server in den meisten Fällen auch in C/C++ geschrieben.

    Wenn es bei dir aber nicht anders geht, dann kannst du theoretisch auch deinen Server in PHP schreiben. Dabei solltest du aber auch die Ausführzeit auf unbegrenzt stellen, da du in deinem Skript eine Endlosschleife brauchst, die immer und immer wieder darauf achtet, ob es neue Sockets gibt, ob Sockets beendet wurden oder ob es Änderungen seitens der Sockets oder für die Sockets gibt. Letztendlich sollte man dieses Skript aber auch als einzelnen Prozess über die Shell starten.
     
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

Ähnliche Themen

  1. HTML5 Canvas Farbfüllung
    Von napsio im Forum HTML & XHTML
    Antworten: 0
    Letzter Beitrag: 09.03.11, 18:45
  2. html5 Canvas Bilder vergrößern
    Von Zerod159 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 14.01.11, 11:27
  3. HTML5 - Canvas asynchron zeichnen.
    Von Danielku15 im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 04.10.10, 12:44
  4. HTML5 - Canvas | Save und Restore
    Von Danielku15 im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 17.06.10, 22:41