panjf2000 / gnet

🚀 gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go.
https://gnet.host
Apache License 2.0
9.7k stars 1.04k forks source link

[Question]: 还想问一下, gnet.Run 怎么可以不阻塞,直接返回吗? #452

Closed maxbad closed 1 year ago

maxbad commented 1 year ago

Questions with details

不然无法接收进程kill的事件啊.

Code snippets (optional)

No response

maxbad commented 1 year ago

还顺便想问一下, 可以又文档吗? 是不是只有一个简单的示例呢,

比如我想要实现, 客户端连接上来后, 3秒没有收发数据就断开, 收到第一条数据后,改为30秒没有数据收发就断开, 这样的操作要如何搞呢,

我再 OnOpen 设置 c.SetReadDeadline(time.Now().Add(3 * time.Second)) 为啥不支持这样呢/

panjf2000 commented 1 year ago

用 goroutine 不就可以了吗

panjf2000 commented 1 year ago

还顺便想问一下, 可以又文档吗? 是不是只有一个简单的示例呢,

比如我想要实现, 客户端连接上来后, 3秒没有收发数据就断开, 收到第一条数据后,改为30秒没有数据收发就断开, 这样的操作要如何搞呢,

我再 OnOpen 设置 c.SetReadDeadline(time.Now().Add(3 * time.Second)) 为啥不支持这样呢/

现在不支持超时设置,你可以自己实现,自己弄一个定时任务去检查你的连接状态,然后想断开就断开。

maxbad commented 1 year ago

用 goroutine 不就可以了吗

再goroutine里 gnet.Run 有err不是nil的时候呢,

maxbad commented 1 year ago

还有就是停止服务只能是被动式的,再OnOpen,OnClose,OnTraffic,OnTick 里面返回 gnet.Shutdown 来停止吗? 没有主动执行停止服务的函数吗?

panjf2000 commented 1 year ago

用 goroutine 不就可以了吗

再goroutine里 gnet.Run 有err不是nil的时候呢,

有错误说明启动失败,需要排查问题。

panjf2000 commented 1 year ago

还有就是停止服务只能是被动式的,再OnOpen,OnClose,OnTraffic,OnTick 里面返回 gnet.Shutdown 来停止吗? 没有主动执行停止服务的函数吗?

https://pkg.go.dev/github.com/panjf2000/gnet/v2#Engine.Stop

以后提问题之前先在文档和例子里自己先找找