该项目的灵感来自于 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 &