該項目的靈感來自於 r/Place。它是一個線上共享畫布,您可以在其中繪製單個像素。
項目上線於 pl.g7kk.com。
您需要使用 Go 編譯器編譯 place.go。
運行go build
:
cd ./place
go build cmd/place/place.go
或者,使用go install
:
cd ./place
go install cmd/place/place.go
執行 place 並將-root參數設定為 web/root 目錄的位置。您也可以在運行時配置其他設定(請參閱下文)。
place -root web/root -port :8080
-根字串
包含 Web 檔案的目錄。 (預設“./root”)
- 計數整數
最大連接數。 (預設 64)
-寬度整數
建立畫布的寬度。 (預設 1024)
-高度整數
建立畫布的高度。 (預設 1024)
-載入字串
作為畫布加載的 png。 (如果未設置,它將創建一個空白畫布)
- 保存字串
保存畫布的名稱。 (預設“./place.png”)
-日誌字串
要寫入的日誌檔案。 (如果沒有設定它將記錄到命令列)
-連接埠字串
伺服器偵聽的連接埠。 (預設“:8080”)
-sinterval整數
保存間隔(以秒為單位)。 (預設 180)
-wl (無值)啟用白名單
-whitelist string 白名單的路徑。 (預設“whitelist.csv”)
-loadRecord string 要載入的記錄影像的路徑。 (如果未設定則建立空白記錄)
-saveRecord string 儲存記錄影像的路徑。 (預設“記錄.png”)
您可以選擇新增白名單。啟用白名單後,只有擁有金鑰的使用者才能在畫布上繪圖。伺服器還將保存每個像素的放置者的記錄。
要使用白名單,首先建立一個 csv 文件。每個用戶都將擁有一個個人金鑰和一個 ID,用於在記錄中識別他們的身份。 key應該是長字串,ID應該是[1,65535]範圍內的整數。
我建議使用 uuid 作為金鑰。例如:
2237701c-7558-4424-95e1-beee4f6a406a,1
f9e41cf2-0e5d-43f2-bffd-5e2f1aab0a3b,2
4917ba68-41be-4956-93a7-0563257ff182,3
79df0674-f6d5-4556-baad-992e81f72bb2,65535
記錄影像中的像素顏色與白名單中的ID相對應。
當您使用 -wl 參數啟用白名單時,它將在工作目錄中尋找名為「whitelist.csv」的檔案。但您也可以設定自己的路徑:
place -wl -whitelist my_white_list.csv
您也可以使用 -loadRecord 載入現有記錄映像,這與載入畫布的 -load 類似
place -load place.png -wl -loadRecord record.csv
如果不包含 -wl 參數,則白名單和記錄將被忽略。
我建議設定一些腳本來輕鬆重新啟動伺服器或回滾畫布。
該腳本會終止伺服器並使用舊畫布重新啟動它。這不會重置畫布。
在我的伺服器上,我將此腳本設定為 cron 作業,每晚執行以刪除任何延遲的 Websocket 連線。
cd ~ /go/src/place/web
pkill place
~ /go/bin/place -port :80 -load place.png & > place.log &
該腳本將畫布回滾到先前儲存的圖像。
cd ~ /go/src/place/web
pkill place
cp place_rollback.png place.png
~ /go/bin/place -port :80 -load place.png & > place.log &