golang websocket
1.0.0
克隆這個存儲庫
安裝存儲庫並運行此命令以安裝依賴項
make setup
make run
localhost:8080 運行服務器後,打開您的Websocket客戶端。如果您沒有,請嘗試使用Chrome的Websocket King擴展。
連接到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 :處理打開/關閉連接並將消息傳遞給服務器。
型號:存儲服務器使用的模型。
server.go :根據客戶端消息運行特定的操作,還包含服務器所需的功能,以便作為Websocket服務器正常工作。
這個存儲庫遠非理想。這只是概念驗證。
雖然此存儲庫靠近酒吧,但仍可用於聊天服務器。
例如,我們可以在連接的套接字上添加一個函數,以便將客戶端自動訂閱其自己的ID作為主題。然後,其他客戶將使用這些用戶的ID作為主題來發布消息。
我已經嘗試建立與授權結合使用的解決方案,以防止其他用戶訂閱他人的ID,並且確實有效。
該存儲庫的靈感來自@tabvn的Golang-pubsub