โคลนที่เก็บนี้
ติดตั้งที่เก็บและเรียกใช้คำสั่งนี้เพื่อติดตั้งการพึ่งพา
make setup
make run
localhost:8080 หลังจากเรียกใช้เซิร์ฟเวอร์ให้เปิดไคลเอนต์ WebSocket ของคุณ หากคุณไม่มีอะไรลองใช้ส่วนขยาย Websocket King สำหรับ Chrome
เชื่อมต่อกับ ws://localhost:8080/socket คุณจะได้รับการต้อนรับจากเซิร์ฟเวอร์
Server: Welcome! Your ID is f0ab664a-5af3-4f8d-8afe-eb93085267e4
{
"action": "subscribe",
"topic": "world"
}
{
"action": "publish",
"topic": "world",
"message": "Hello world!"
}
{
"action": "unsubscribe",
"topic": "world"
}
คุณอาจถามว่า "ทำไมฉันควรใช้ WebSocket แทน REST API"
REST API ใช้ HTTP ซึ่งสามารถส่งการตอบกลับได้เพียงครั้งเดียวต่อคำขอ
ในขณะเดียวกัน WebSocket สามารถใช้สำหรับการสื่อสารแบบสองทิศทางแบบถาวรโดยไม่จำเป็นต้องมีการเชื่อมต่อใหม่ทุกครั้ง
สิ่งนี้มีประโยชน์ในบางสถานการณ์เช่นการแชทหรือผับ
นี่คือไดอะแกรมเพื่อให้เห็นภาพความแตกต่างระหว่าง HTTP และ WebSocket

ผังงานนี้อธิบายวิธีการทำงานของเซิร์ฟเวอร์นี้ 
cmd
└── main
└── main.go
internal
└── websocket
└── handler.go
└── model.go
└── server.go
Main.go : ไฟล์หลักที่จะดำเนินการ
handler.go : จัดการการเชื่อมต่อแบบเปิด/ปิด & ส่งข้อความไปยังเซิร์ฟเวอร์
model.go : เก็บโมเดลที่ใช้โดยเซิร์ฟเวอร์
Server.Go : รันการกระทำเฉพาะตามข้อความไคลเอนต์ยังมีฟังก์ชั่นที่เซิร์ฟเวอร์ต้องการทำงานอย่างถูกต้องเป็นเซิร์ฟเวอร์ WebSocket
ที่เก็บนี้อยู่ไกลจากอุดมคติ มันเป็นเพียงการพิสูจน์แนวคิด
ในขณะที่ที่เก็บนี้อยู่ใกล้กับผับ-SUB แต่ก็ยังสามารถใช้สำหรับเซิร์ฟเวอร์แชทได้
ตัวอย่างเช่นเราสามารถเพิ่มฟังก์ชั่นบนซ็อกเก็ตที่เชื่อมต่อเพื่อให้ไคลเอนต์จะสมัครสมาชิก ID ของตนเองเป็นหัวข้อโดยอัตโนมัติ ลูกค้าอื่น ๆ จะใช้รหัสของผู้ใช้เหล่านั้นเป็นหัวข้อในการเผยแพร่ข้อความ
ฉันได้ลองสร้างโซลูชันดังกล่าวรวมกับการอนุญาตเพื่อป้องกันไม่ให้ผู้ใช้รายอื่นสมัครรับ ID ของผู้อื่นและใช้งานได้
ที่เก็บนี้ได้รับแรงบันดาลใจจาก Golang-Pubsub โดย @tabvn