52 lines
1.6 KiB
Go
52 lines
1.6 KiB
Go
package server_test
|
||
|
||
import (
|
||
"fmt"
|
||
"github.com/kercylan98/minotaur/server"
|
||
"github.com/kercylan98/minotaur/utils/times"
|
||
"time"
|
||
)
|
||
|
||
// 服务器在启动时将阻塞 1s,模拟了慢消息的过程,这时候如果通过 RegMessageLowExecEvent 函数注册过慢消息事件,将会收到该事件的消息
|
||
// - 该示例中,将在收到慢消息时关闭服务器
|
||
func ExampleWithLowMessageDuration() {
|
||
srv := server.New(server.NetworkNone,
|
||
server.WithLowMessageDuration(time.Second),
|
||
)
|
||
srv.RegStartFinishEvent(func(srv *server.Server) {
|
||
time.Sleep(time.Second)
|
||
})
|
||
srv.RegMessageLowExecEvent(func(srv *server.Server, message *server.Message, cost time.Duration) {
|
||
srv.Shutdown()
|
||
fmt.Println(times.GetSecond(cost))
|
||
})
|
||
if err := srv.RunNone(); err != nil {
|
||
panic(err)
|
||
}
|
||
// Output:
|
||
// 1
|
||
}
|
||
|
||
// 服务器在启动时将发布一条阻塞 1s 的异步消息,模拟了慢消息的过程,这时候如果通过 RegMessageLowExecEvent 函数注册过慢消息事件,将会收到该事件的消息
|
||
// - 该示例中,将在收到慢消息时关闭服务器
|
||
func ExampleWithAsyncLowMessageDuration() {
|
||
srv := server.New(server.NetworkNone,
|
||
server.WithAsyncLowMessageDuration(time.Second),
|
||
)
|
||
srv.RegStartFinishEvent(func(srv *server.Server) {
|
||
srv.PushAsyncMessage(func() error {
|
||
time.Sleep(time.Second)
|
||
return nil
|
||
}, nil)
|
||
})
|
||
srv.RegMessageLowExecEvent(func(srv *server.Server, message *server.Message, cost time.Duration) {
|
||
srv.Shutdown()
|
||
fmt.Println(times.GetSecond(cost))
|
||
})
|
||
if err := srv.RunNone(); err != nil {
|
||
panic(err)
|
||
}
|
||
// Output:
|
||
// 1
|
||
}
|