lxzan / gws

simple, fast, reliable websocket server & client, supports running over tcp/kcp/unix domain socket. keywords: ws, proxy, chat, go, golang...
https://pkg.go.dev/github.com/lxzan/gws
Apache License 2.0
1.36k stars 87 forks source link

OnMessage中的msg没有收回到内存池 #40

Closed joestarzxh closed 1 year ago

joestarzxh commented 1 year ago

您好,OnMessage中的msg没有收回到内存池是出于怎么样的考虑呢?

lxzan commented 1 year ago

Close之后就会回收.

gws feature比较多, 自带了任务队列并发处理请求. 不使用固定buffer, msg可以跨协程共享, 还有个好处是避免了buffer扩容问题.

lxzan commented 1 year ago

那些自动回收msg的ws库, 一般是把固定的buffer和conn绑定, 同步处理请求, 完成处理后reset.

joestarzxh commented 1 year ago

看懂了,也就是在OnMessage函数中需要调用msg.close。的确发现很多不同的设计,学习到很多,很棒

joestarzxh commented 1 year ago

很多思路可以应用到其他地方。 不在内部调用msg.close,为了减少内存拷贝是吧

lxzan commented 1 year ago

不在内部调用msg.close,为了减少内存拷贝是吧

主要是出于并发和避免动态扩容方面的考虑

joestarzxh commented 1 year ago

明白了

lxzan commented 1 year ago

的确发现很多不同的设计,学习到很多,很棒

gorilla 功能更丰富些, 提供了并行处理, 异步写入, 群体广播等特性.