Im eine Echtzeit-Farbauftrag schreiben NodeJS + HTML5-Canvas & WebSocketsEchtzeit Leinwand Sitzungsdaten speichern auf Knoten JS
mitderzeit Server nur als Relais wirkt und was auch immer jeder Benutzer den Rest der Sendung wird Ziehungen Benutzer.
Das Problem hier ist, dass wenn neue Benutzer auftauchen, sie mit einer leeren Leinwand beginnen.
Ich habe zwei Ideen, wie dieses Problem zu lösen,
1) die ereignisgesteuerten Ansatz - das ist, wo ich im Speicher bestehen jede Veranstaltung ziehen. und wenn der neue Benutzer zu der Sitzung erscheint. Alle Ereignisse werden rekonstruiert und an ihn gesendet.
2) Der Server verwaltet eine Kopie der Arbeitsfläche. Anstatt also nur die Zeichenereignisse weiterzuleiten, rendert der Server auch alle Zeichenereignisse. Wenn ein neuer Benutzer erscheint, wird dieser Status an ihn weitergegeben.
Jeder hat irgendwelche Gedanken über die Vor- und Nachteile der beiden Ansatz oder noch besser, ein besserer Weg, um es zu lösen!
Ran in dieser Frage selbst während meiner Diplomarbeit. Ich habe die zweite Option verwendet und redis zum Speichern von Canvas-Daten verwendet. Wenn ein Benutzer beitritt, werden die Daten über den Socket gesendet. Auf diese Weise hat jede neue Verbindung alle Daten auf dem Bildschirm –
@ Dennington-Bär wow froh zu wissen, ich bin nicht allein. Vielen Dank! Hat sich dies auf die Geschwindigkeit der Zustellung an die Benutzer ausgewirkt? im Vergleich zu nur Weiterleitung? Auch daran gedacht, Redis zu verwenden! –
Ich habe es nur auf meinem lokalen Netz der Hochschulen getestet. Aber ich hatte rund 100 Clients, die keine sichtbare Verzögerung vom Host hatten. Um die 120-130-Marke habe ich Lag bemerkt. Aber selbst dann ging ich aus irgendeinem Grund den Weg, den Kindprozess mit node.js zu verwenden, was nicht die beste Richtung war. Wenn ich es jetzt machen würde, würde ich mehr nach Clustern schauen. Ich denke, das würde dir viel mehr Leistung bringen, da ich wahrscheinlich überall teure Fehler zurückgelassen habe, die die Performance behindert haben. Redis war für mich die beste verfügbare Option, aber für Ihren Anwendungsfall könnte das anders sein. –