



ผู้ส่งสารแชทแบบกระจายที่ใช้เครือข่าย Bluetooth Le Mesh
โครงการประกอบด้วยส่วนประกอบต่อไปนี้:
DistributedChatKit : แอปพลิเคชันนามธรรม, แพลตฟอร์มอิสระ, ไม่ขึ้นกับการขนส่ง (ใช้อินเตอร์เฟสสำหรับการออกอากาศ/รับข้อความ)DistributedChatBluetooth : การส่งผ่านบลูทู ธ เฉพาะของแพลตฟอร์มเฉพาะDistributedChatApp : การใช้งาน iOS/MACOS ใช้ Bluetooth LE เป็นการขนส่ง ไม่ จำเป็นต้องมีเซิร์ฟเวอร์DistributedChatCLI : การใช้งาน CLI ใช้ HTTP/WebSockets เป็นการขนส่งด้วยเซิร์ฟเวอร์จำลองหรือบลูทู ธ LE (WIP)DistributedChatSimulationProtocol : โปรโตคอลที่ใช้ JSON ระดับสูงที่ใช้ระหว่าง CLI และเซิร์ฟเวอร์จำลองDistributedChatSimulationServer : เซิร์ฟเวอร์ Companion สำหรับ CLI, รีเลย์ข้อความระหว่างโหนด CLI ที่เชื่อมต่อได้จัดเตรียมเว็บอินเทอร์เฟซสำหรับการกำหนดค่าลิงก์ระหว่างโหนดScripts : สคริปต์สำหรับการเปิดตัวอินสแตนซ์ CLI อย่างสะดวกและสำหรับการทดสอบการขนส่ง BLEกราฟการพึ่งพาระหว่างแพ็คเกจเหล่านี้มีลักษณะเช่นนี้:
%% {init: {"flowchart": {"defaultrenderer": "elk"}}} %%
ผังงาน BT
กริชกราฟฟอร์ม
DistributedChatBluetooth -> DistributedChatKit
DistributedChatcli -> DistributedChatKit
DistributedChatcli -> DistributedChatBluetooth
DistributedChatcli -> DistributedChatsimulationProtocol
DistributedChatsimulationserver -> DistributedChatsimulationProtocol
จบ
Subgraph "Apple Platforms"
DistributedChatApp -> DistributedChatKit
DistributedChatApp -> DistributedChatBluetooth
จบ
ก่อนอื่นตรวจสอบให้แน่ใจว่าได้ติดตั้ง Swift 5.10+ หรือใหม่กว่า รุ่นล่าสุดสำหรับ Ubuntu และ MacOS สามารถพบได้ที่นี่
ในการเรียกใช้เซิร์ฟเวอร์จำลองนำทางไปยังไดเรกทอรี DistributedChatSimulationServer และดำเนินการ:
swift run ตอนนี้เว็บอินเตอร์เฟสควรเข้าถึงได้ที่ http://localhost:8080
ในการเริ่มต้นอินสแตนซ์เดียวของ CLI ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์จำลองกำลังทำงานอยู่นำทางไปยัง DistributedChatCLI และดำเนินการ:
swift run distributed-chat --name Aliceคุณสามารถแทนที่ชื่อใด ๆ สำหรับอลิซ เมื่อ CLI เริ่มต้นชื่อที่เลือกควรปรากฏเป็นโหนดในเว็บอินเตอร์เฟสของเซิร์ฟเวอร์จำลอง
เพื่อความสะดวกมีสคริปต์ทุบตีสำหรับการเริ่มต้นหลายอินสแตนซ์ของ CLI ด้วยกันในเซสชัน tmux เดียว ในการใช้งานนำทางไปยังไดเรกทอรีรากของที่เก็บนี้และเรียกใช้
Scripts/start_clis Alice Bob Charles Dave ... หรือลูกค้าจำนวนมากที่คุณต้องการเริ่มต้น หากต้องการหยุดลูกค้าทั้งหมดในครั้งเดียวให้กด Ctrl + B จากนั้นพิมพ์ :kill-session แล้วกด Enter
การสร้างและเรียกใช้แอพ iOS เป็นไปได้เฉพาะใน MacOS ดังนั้นอย่าลืมมีสิ่งต่อไปนี้:
เปิดไดเรกทอรีย่อย DistributedChatApp ใน XCODE และสร้าง/เรียกใช้โครงการ