บทนำภาษาอังกฤษ |中文介绍
WebLink เป็นแอปพลิเคชันการถ่ายโอนไฟล์บนเว็บที่บริสุทธิ์และแอปพลิเคชันข้อความ/วิดีโอแชทที่สร้างขึ้นบน WebRTC ไม่จำเป็นต้องดาวน์โหลดและทำงานโดยตรงในเบราว์เซอร์ของคุณ การใช้สถาปัตยกรรม P2P แบบไม่มีเซิร์ฟเวอร์นั้นรองรับแบ็กเอนด์หลายรายการรวมถึง Firebase และ WebSocket สำหรับการเชื่อมต่อแบบเพียร์ทูเพียร์ที่มีประสิทธิภาพ นอกจากนี้ WebLink ทำให้มั่นใจได้ถึงความเป็นส่วนตัวและความปลอดภัยของการส่งสัญญาณข้อความผ่านการเข้ารหัสแบบ end-to-end
โครงการถูกปรับใช้ในหน้า CloudFlare และใช้ Firebase เนื่องจากสามารถเข้าถึงแบ็กเอนด์ได้ที่ https://v.webl.ink
หรือคุณสามารถใช้เวอร์ชันโดยใช้ WebSocket ที่โฮสต์ตนเองเป็นแบ็กเอนด์ได้ที่ https://webl.ink
WebLink ปัจจุบันรองรับคุณสมบัติต่อไปนี้:
| คุณสมบัติ | คำอธิบาย |
|---|---|
| การซิงโครไนซ์ไฟล์ | ดึงไฟล์ที่แคชจากอีกฝ่ายได้อย่างราบรื่น |
| ⏯ การถ่ายโอนประวัติย่อ | การถ่ายโอนไฟล์ต่อได้อย่างง่ายดายหากการเชื่อมต่อถูกขัดจังหวะ |
| การแคชไฟล์ | ไฟล์ที่ถ่ายโอนจะถูกแคชอย่างปลอดภัยใน indexedDB |
| การแบ่งปันหน้าจอ | แชร์หน้าจอกล้องและเสียง (รวมลำโพงและไมโครโฟน) กับลูกค้าหลายราย |
| - การค้นหาไฟล์ | ค้นหาไฟล์แคชจากคุณและอีกฝ่ายอย่างรวดเร็ว |
| - การถ่ายโอนคลิปบอร์ด | วางเนื้อหาคลิปบอร์ดลงในการแชทโดยตรงกับ Ctrl + V หรือการกระทำวางบนมือถือ |
| - การโอนโฟลเดอร์ | ส่งโฟลเดอร์อย่างง่ายดายด้วยการบีบอัดอัตโนมัติ |
| - การถ่ายโอนบีบอัด | เลือกที่จะบีบอัดไฟล์ระหว่างการถ่ายโอนเพื่อการจัดการข้อมูลที่มีประสิทธิภาพ |
| ⚡ การถ่ายโอนหลายช่องทาง | เพิ่มประสิทธิภาพการถ่ายโอนด้วยการถ่ายโอนข้อมูลแบบขนานในหลายช่องทาง |
| - แบ่งปันและส่งต่อ | แชร์ข้อความหรือไฟล์ผ่านการแชร์ระบบหลังจากติดตั้งเป็น PWA |
| แชทข้อความ | แลกเปลี่ยนข้อความเพื่อการสื่อสารที่ราบรื่น |
ข้อมูลเพิ่มเติมสามารถพบได้ใน Changelog
git clone https://github.com/99percentpeople/weblink.git
cd weblink
pnpm installตรวจสอบให้แน่ใจว่าคุณกำหนดค่าปุ่ม Firebase ในโครงการ (ดังที่แสดงด้านล่าง) จากนั้นเรียกใช้คำสั่งต่อไปนี้:
# Development
pnpm dev
# Build
pnpm build คุณสามารถปรับใช้โครงการนี้เพื่อ Docker โดยใช้ docker-compose.yaml และจะสร้าง weblink-ws-server โดยอัตโนมัติเป็นแบ็กเอนด์
แก้ไขไฟล์ docker-compose.yaml เพื่อตั้งค่าตัวแปรสภาพแวดล้อมที่ถูกต้อง จากนั้นเรียกใช้คำสั่งต่อไปนี้:
docker-compose up -d ในการเปิดใช้งาน SSL คุณต้องระบุ cert.pem SSL และคีย์คีย์ไฟล์ key.pem ในไดเรกทอรี docker/ssl และเรียกใช้คำสั่งต่อไปนี้:
ENABLE_SSL=true docker-compose up -dหรือคุณสามารถใช้ DockerFile เพื่อปรับใช้โครงการนี้กับ Docker
หากต้องการปรับใช้โครงการนี้ไปยัง Vercel ให้ทำตามขั้นตอนเหล่านี้:
ไปที่เว็บไซต์ vercel และเข้าสู่ระบบ (หรือสร้างบัญชี)
เชื่อมต่อที่เก็บ GitHub ของคุณและเลือกที่เก็บโคลน
ในการตั้งค่าโครงการ Vercel ของคุณค้นหา "ตัวแปรสภาพแวดล้อม" และเพิ่มคีย์ API Firebase และตัวแปรสภาพแวดล้อมอื่น ๆ (ดังที่แสดงด้านล่าง)
คลิกปุ่ม "ปรับใช้" และ Vercel จะสร้างและปรับใช้โครงการของคุณโดยอัตโนมัติ
คุณจะต้องกำหนดค่าคีย์ Firebase สำหรับการพัฒนาท้องถิ่นและการปรับใช้กับ Vercel เพิ่มตัวแปรสภาพแวดล้อม firebase ต่อไปนี้:
VITE_FIREBASE_API_KEY
VITE_FIREBASE_AUTH_DOMAIN
VITE_FIREBASE_PROJECT_ID
VITE_FIREBASE_STORAGE_BUCKET
VITE_FIREBASE_MESSAGING_SENDER_ID
VITE_FIREBASE_APP_ID
VITE_FIREBASE_DATABASE_URL
สำหรับการปรับใช้ Vercel ตั้งค่าตัวแปรสภาพแวดล้อมโดยทำตามขั้นตอนเหล่านี้:
เปิดโครงการ vercel ของคุณและไปที่ "การตั้งค่า"
ค้นหา "ตัวแปรสภาพแวดล้อม"
เพิ่มรายการการกำหนดค่า firebase ด้านบนและป้อนค่าที่สอดคล้องกัน
แอปพลิเคชันนี้สามารถปรับใช้เซิร์ฟเวอร์ WebSocket ของตัวเองและมีเซิร์ฟเวอร์ WebSocket คุณสามารถเลือกใช้หรือไม่ สำหรับรายละเอียดโปรดดูที่ weblink-ws-server
สำหรับการพัฒนาในท้องถิ่นให้สร้างไฟล์. env.local และเพิ่มปุ่ม Firebase:
# backend choose FIREBASE or WEBSOCKET
# FIREBASE
VITE_BACKEND = FIREBASE
VITE_FIREBASE_API_KEY = your-firebase-api-key
VITE_FIREBASE_AUTH_DOMAIN = your-firebase-auth-domain
VITE_FIREBASE_PROJECT_ID = your-firebase-project-id
VITE_FIREBASE_STORAGE_BUCKET = your-firebase-storage-bucket
VITE_FIREBASE_MESSAGING_SENDER_ID = your-firebase-messaging-sender-id
VITE_FIREBASE_APP_ID = your-firebase-app-id
VITE_FIREBASE_DATABASE_URL = your-database-url
# WEBSOCKET
VITE_BACKEND = WEBSOCKET
VITE_WEBSOCKET_URL = your-websocket-url หากคุณใช้การเชื่อมต่อ P2P นอกเครือข่ายพื้นที่ท้องถิ่น (ในสภาพแวดล้อม NAT) คุณอาจต้องกำหนดค่าเซิร์ฟเวอร์เลี้ยวเพื่อให้แน่ใจว่ามีการสร้างการเชื่อมต่อ ในหน้าการตั้งค่าคุณสามารถกำหนดค่าเทิร์นเซิร์ฟเวอร์ด้วยรูปแบบต่อไปนี้รองรับเซิร์ฟเวอร์ Coturn และ CloudFlare Turn และแยกการกำหนดค่าหลายรายการด้วยอักขระใหม่:
เปลี่ยนรูปแบบการกำหนดค่า:
# use coturn with account and password
turn:turn1.example.com:3478|user1|pass1|longterm
# use coturn with timestamp
turns:turn2.example.com:5349|user2|pass2|hmac
# use cloudflare turn server
name|TURN_TOKEN_ID|API_TOKEN|cloudflare
นี่คือวิธีการบางอย่างในการรับสัญญาณสาธารณะและเลี้ยวเซิร์ฟเวอร์:
แอปพลิเคชันนี้เริ่มต้นที่จะใช้เซิร์ฟเวอร์ STAN ของ Google หากคุณไม่สามารถเชื่อมต่อได้โปรดกำหนดค่าเซิร์ฟเวอร์ Stun ของคุณเอง คุณสามารถอ้างถึง https://gist.github.com/mondain/B0EC1CF5F60AE726202E สำหรับรายการเซิร์ฟเวอร์สาธารณะ จากนั้นเพิ่ม STAN SERVER ในรูปแบบ stun:xxxx:xxxx ไปยังรายการ STAN Server ในหน้าการตั้งค่าเช่น stun:stun.l.google.com:19302
คุณสามารถใช้เทิร์นเซิร์ฟเวอร์ที่ให้บริการโดยการโทรแบบ CloudFlare กรุณาเยี่ยมชม https://developers.cloudflare.com/calls/turn จากนั้นเพิ่มเทิร์นเซิร์ฟเวอร์ใน name|TURN_TOKEN_ID|API_TOKEN|cloudflare ไปยังรายการเซิร์ฟเวอร์เลี้ยวในหน้าการตั้งค่า
คุณสามารถอ้างถึง https://github.com/coturn/coturn เพื่อตั้งค่าเทิร์นเซิร์ฟเวอร์ของคุณเอง
ปัจจุบันแอปพลิเคชันรองรับการใช้ LAN ในสภาพแวดล้อมที่ไม่ปลอดภัย ตรวจสอบให้แน่ใจว่าอุปกรณ์ของคุณอยู่ใน LAN เดียวกันและไฟร์วอลล์ไม่ได้บล็อกการเชื่อมต่อ P2P
และในเวลาเดียวกันรัน WebLink-WS-Server เพื่อรองรับการเชื่อมต่อ WebSocket
ยินดีต้อนรับ! โปรดส่งปัญหาหรือดึงคำขอ
โครงการนี้เปิดโล่งภายใต้ใบอนุญาต MIT