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