docs: 更新 README.md 文件中对于分流服务器部分的说明
This commit is contained in:
parent
dc557a06d4
commit
61b4ef7a8c
24
README.md
24
README.md
|
@ -90,27 +90,35 @@ func main() {
|
||||||
> Websocket地址: ws://127.0.0.1:9999
|
> Websocket地址: ws://127.0.0.1:9999
|
||||||
|
|
||||||
### 分流服务器
|
### 分流服务器
|
||||||
分流服务器可以将客户端分流到不同的分组上,每个分组中为串行处理,不同分组之间并行处理。
|
分流服务器可以将消息分流到不同的分组上,每个分组中为串行处理,不同分组之间并行处理。
|
||||||
```go
|
```go
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import "github.com/kercylan98/minotaur/server"
|
import "github.com/kercylan98/minotaur/server"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
srv := server.New(server.NetworkWebsocket,
|
srv := server.New(server.NetworkWebsocket)
|
||||||
server.WithShunt(func(conn *server.Conn) string {
|
srv.RegConnectionOpenedEvent(func(srv *server.Server, conn *server.Conn) {
|
||||||
return conn.GetData("roomId").(string)
|
// 通过 user_id 进行分流,不同用户的消息将不会互相阻塞
|
||||||
}),
|
srv.UseShunt(conn, conn.Gata("user_id").(string))
|
||||||
)
|
})
|
||||||
srv.RegConnectionReceivePacketEvent(func(srv *server.Server, conn *server.Conn, packet []byte) {
|
srv.RegConnectionReceivePacketEvent(func(srv *server.Server, conn *server.Conn, packet []byte) {
|
||||||
conn.Write(packet)
|
var roomId = "default"
|
||||||
|
switch string(packet) {
|
||||||
|
case "JoinRoom":
|
||||||
|
// 将用户所处的分流渠道切换到 roomId 渠道,此刻同一分流渠道的消息将会按队列顺序处理
|
||||||
|
srv.UseShunt(conn, roomId)
|
||||||
|
case "LeaveRoom":
|
||||||
|
// 将用户所处分流切换为用户自身的分流渠道
|
||||||
|
srv.UseShunt(conn, conn.Gata("user_id").(string))
|
||||||
|
}
|
||||||
})
|
})
|
||||||
if err := srv.Run(":9999"); err != nil {
|
if err := srv.Run(":9999"); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
> 该示例中假设各房间互不干涉,故通过`server.WithShunt`将连接通过`roomId`进行分组,提高并发处理能力。
|
> 该示例中模拟了用户分流渠道在自身渠道和房间渠道切换的过程,通过`UseShunt`对连接分流渠道进行设置,提高并发处理能力。
|
||||||
|
|
||||||
### 服务器死锁检测
|
### 服务器死锁检测
|
||||||
`Minotaur`内置了服务器消息死锁检测功能,可通过`server.WithDeadlockDetect`进行开启。
|
`Minotaur`内置了服务器消息死锁检测功能,可通过`server.WithDeadlockDetect`进行开启。
|
||||||
|
|
Loading…
Reference in New Issue