โครงการนี้ได้รับแรงบันดาลใจจาก r/Place เป็นผืนผ้าใบที่ใช้ร่วมกันแบบออนไลน์ซึ่งคุณสามารถวาดแต่ละพิกเซลได้
โครงการออนไลน์อยู่ที่ pl.g7kk.com
คุณต้องคอมไพล์ place.go โดยใช้คอมไพเลอร์ Go
วิ่ง go build
:
cd ./place
go build cmd/place/place.go
หรือใช้ go install
:
cd ./place
go install cmd/place/place.go
เรียกใช้สถานที่และตั้งค่าอาร์กิวเมนต์ -root เป็นตำแหน่งของไดเร็กทอรีเว็บ/รูท คุณยังสามารถกำหนดการตั้งค่าอื่นๆ ได้เมื่อคุณเรียกใช้ (ดูด้านล่าง)
place -root web/root -port :8080
สตริง -root
ไดเร็กทอรีที่มีไฟล์เว็บ (ค่าเริ่มต้น "./root")
-นับ จำนวนภายใน
จำนวนการเชื่อมต่อสูงสุด (ค่าเริ่มต้น 64)
-ความกว้าง ภายใน
ความกว้างในการสร้างผืนผ้าใบ (ค่าเริ่มต้น 1024)
-ความสูง อินท
ความสูงในการสร้างผืนผ้าใบ (ค่าเริ่มต้น 1024)
-โหลด สตริง
PNG ที่จะโหลดเป็นผืนผ้าใบ (หากไม่ได้ตั้งค่าจะสร้างผืนผ้าใบเปล่า)
- บันทึก สตริง
ชื่อที่จะบันทึกผืนผ้าใบ (ค่าเริ่มต้น "./place.png")
-บันทึก สตริง
ไฟล์บันทึกที่จะเขียนถึง (หากไม่ได้ตั้งค่าจะเข้าสู่บรรทัดคำสั่ง)
- สตริง พอร์ต
พอร์ตที่เซิร์ฟเวอร์รับฟัง (ค่าเริ่มต้น ":8080")
-sinterval int
บันทึกช่วงเวลาเป็นวินาที (ค่าเริ่มต้น 180)
-wl (ไม่มีค่า) เปิดใช้งานรายการที่อนุญาต
-whitelist สตริงเส้นทางไปยังรายการที่อนุญาต (ค่าเริ่มต้น "whitelist.csv")
-loadRecord string เส้นทางของภาพที่บันทึกที่จะโหลด (สร้างบันทึกเปล่าหากไม่ได้ตั้งค่า)
-saveRecord string Path เพื่อบันทึกภาพบันทึก (ค่าเริ่มต้น "record.png")
คุณสามารถเลือกเพิ่มรายการที่อนุญาตได้ เมื่อเปิดใช้งานไวท์ลิสต์ เฉพาะผู้ใช้ที่มีคีย์เท่านั้นจึงจะสามารถวาดบนผืนผ้าใบได้ เซิร์ฟเวอร์จะเก็บบันทึกว่าใครวางแต่ละพิกเซลด้วย
หากต้องการใช้ไวท์ลิสต์ ให้สร้างเอกสาร CSV ก่อน ผู้ใช้แต่ละคนจะมีรหัสส่วนตัวและ ID ที่จะระบุพวกเขาในบันทึก คีย์ควรเป็นสตริงยาวและรหัสควรเป็นจำนวนเต็มในช่วง [1,65535]
ฉันแนะนำให้ใช้ uuids สำหรับกุญแจ ตัวอย่างเช่น:
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 &