我对go lang代码的流程有疑问。
在我的main
函数中,我打开mysql
连接,然后使用`defer"在连接结束时关闭连接。
我route
设置并使用了WebSocket
。
我的问题是每次都会编程打开连接,WebSocket用于发送和接收消息,或者只是在页面加载后才会打开。
以下是我的代码的样子: -
package main
import (
// Loading various package
)
func main() {
// Opening DB connection -> *sql.DB
db := openMySql()
// Closing DB connection
defer db.Close()
// Route for "websocket" end point
app.Get("/ws", wsHandler(db))
// Another route using "WebSocket" endpoint.
app.Get("/message", message(db))
}
现在,当用户处于" message
"路由,每当他向其他用户发送消息时,每次发送消息时都会发生mysql
- open
和close
连接事件,并使用" /ws
"路线?
或者只会发生一次?每当" /message
"路线和" /ws
"事件第一次被召唤。
我的目的是使用" db
" in" wsHandler
"功能是验证并检查用户是否有权向特定房间发送消息。
但WebSocket
发出message
或typing
事件时,每秒都无法打开和关闭连接。
在" / ws"中处理权限检查的最佳方法是什么?路由,如果上面的代码是恐怖的?考虑到一个事实,将有几十万并发用户。