Dieses Projekt wurde von r/Place inspiriert. Es handelt sich um eine gemeinsam genutzte Online-Leinwand, auf der Sie einzelne Pixel zeichnen können.
Das Projekt ist online unter pl.g7kk.com.
Sie müssen place.go mit dem Go-Compiler kompilieren.
Führen Sie go build
aus:
cd ./place
go build cmd/place/place.go
Alternativ können Sie go install
verwenden:
cd ./place
go install cmd/place/place.go
Führen Sie place aus und legen Sie das Argument -root auf den Speicherort des Web-/Root-Verzeichnisses fest. Sie können beim Ausführen auch andere Einstellungen konfigurieren (siehe unten).
place -root web/root -port :8080
-root- Zeichenfolge
Das Verzeichnis mit den Webdateien. (Standard „./root“)
-count int
Die maximale Anzahl von Verbindungen. (Standard 64)
-width int
Die Breite zum Erstellen der Leinwand. (Standard 1024)
-height int
Die Höhe zum Erstellen der Leinwand. (Standard 1024)
-Zeichenfolge laden
Ein PNG, das als Leinwand geladen werden soll. (Wenn nicht festgelegt, wird eine leere Leinwand erstellt.)
-save- Zeichenfolge
Der Name zum Speichern der Leinwand. (Standard „./place.png“)
-log- Zeichenfolge
Die Protokolldatei, in die geschrieben werden soll. (Wenn nicht festgelegt, erfolgt die Protokollierung in der Befehlszeile.)
-port- Zeichenfolge
Der Port, an dem der Server lauscht. (Standard „:8080“)
-sinterval int
Speicherintervall in Sekunden. (Standard 180)
-wl (kein Wert) Aktiviert die Whitelist
-whitelist string Pfad zur Whitelist. (Standard „whitelist.csv“)
-loadRecord string Pfad des zu ladenden Datensatzbildes. (Erstellt einen leeren Datensatz, wenn nicht festgelegt)
-saveRecord string Pfad, unter dem das Aufnahmebild gespeichert werden soll. (Standard „record.png“)
Optional können Sie eine Whitelist hinzufügen. Wenn die Whitelist aktiviert ist, können nur Benutzer mit einem Schlüssel auf der Leinwand zeichnen. Der Server zeichnet außerdem auf, wer jedes Pixel platziert hat.
Um eine Whitelist zu verwenden, erstellen Sie zunächst ein CSV-Dokument. Jeder Benutzer erhält einen persönlichen Schlüssel und eine ID, die ihn im Datensatz identifizieren. Der Schlüssel sollte eine lange Zeichenfolge sein und die ID sollte eine Ganzzahl im Bereich von [1,65535] sein.
Ich empfehle die Verwendung von UUIDs für die Schlüssel. Zum Beispiel:
2237701c-7558-4424-95e1-beee4f6a406a,1
f9e41cf2-0e5d-43f2-bffd-5e2f1aab0a3b,2
4917ba68-41be-4956-93a7-0563257ff182,3
79df0674-f6d5-4556-baad-992e81f72bb2,65535
Die Pixelfarben im Aufnahmebild entsprechen der ID in der Whitelist.
Wenn Sie die Whitelist mit dem Argument -wl aktivieren, sucht sie im Arbeitsverzeichnis nach einer Datei mit dem Namen „whitelist.csv“. Sie können aber auch Ihren eigenen Weg vorgeben:
place -wl -whitelist my_white_list.csv
Sie können auch ein vorhandenes Datensatzbild mit -loadRecord laden, was dem Laden der Leinwand mit -load ähnelt
place -load place.png -wl -loadRecord record.csv
Wenn Sie das Argument -wl nicht angeben, werden die Whitelist und der Datensatz ignoriert.
Ich empfehle, einige Skripte einzurichten, um den Server einfach neu zu starten oder die Leinwand zurückzusetzen.
Dieses Skript beendet den Server und startet ihn mit der alten Leinwand neu. Dadurch wird die Leinwand nicht zurückgesetzt.
Auf meinem Server habe ich dieses Skript als Cron-Job eingerichtet, der jede Nacht ausgeführt wird, um alle verbleibenden Websocket-Verbindungen zu entfernen.
cd ~ /go/src/place/web
pkill place
~ /go/bin/place -port :80 -load place.png & > place.log &
Dieses Skript setzt die Leinwand auf ein zuvor gespeichertes Bild zurück.
cd ~ /go/src/place/web
pkill place
cp place_rollback.png place.png
~ /go/bin/place -port :80 -load place.png & > place.log &