基于事件循环,虚心接受大家的批评,渴望大家的 PR ,项目地址: https://github.com/ikilobyte/netman
1
aladdinding 114 天前
star 为敬
|
![]() |
2
sunny1688 OP @aladdinding 感谢感谢
|
3
GGGG430 114 天前
写的不错, 真是新手吗
|
![]() |
4
beidounanxizi 114 天前 ![]() 没看到解决什么问题呀
|
![]() |
5
skiy 114 天前 via iPhone
之前用 GO 原生写的一个 TCP 服务,iot 那边测电压,总是很大,耗电。用 php rust 就很稳定。不知道是什么原因。
|
![]() |
6
lesismal 114 天前
简单看了下,暂时看到几个问题,windows 下的没有 uni*的跳转,所以没仔细看、不一定准确,供楼主参考:
1. fd 是非阻塞的,但读包解包用了 ReadFull 的逻辑,在本次只有半包数据时连接就被断开了,这是不应该作为生产服务来部署的 2. conn 直接写,数据量大写失败应判断 err 类型,缓冲区满、中断之类的应该 AddWrite 等待可写再写 3. server 处理 message 单协程,go 的指令不像 c/cpp 那么快,这种逻辑单协程性能可能会吃紧,如果说 handler 再自己加 pool 、异步之类的,则 server 这块的逻辑协程其实就不需要了 |
![]() |
7
lesismal 114 天前
@skiy 应该是你们自己代码问题,不熟悉 go 的人如果不小心来个 for { select default } 之类的,就可能 cpu 100%了,具体问题得按你们自己的代码具体分析
|
![]() |
8
leonme 114 天前 via iPhone
解决什么问题呢?
|
![]() |
9
lux182 114 天前
重写是最好的学习,知道和创造是两个概念
|
![]() |
10
sunny1688 OP @lesismal 感谢
windows 如果是用 goland 的话,可以设置一下编译平台,这样就有代码提示了,示例: https://s4.ax1x.com/2022/01/25/7HSX0P.png |
![]() |
11
skiy 113 天前 via iPhone
@lesismal 我原本也认为是我代码问题,但是我照着好些别人的框架和 demo 来,一样的问题。我都怀疑是不是还要配置些什么东西和编译时加些什么参数了。
https://gitcode.net/skiy/serv_demo/-/blob/6698453b6f9d493ff6755cdfea32a1a5d2c93368/demo.go |
12
qq1340691923 113 天前
star 了
|
![]() |
13
lesismal 113 天前
|
![]() |
15
lesismal 113 天前
@skiy 这个 demo 体现不出来啥,你实测时候的连接数、载荷、qps 、日志量,都影响,go 版本代码跟你的其他语言代码功能差别,这些都只有你自己能够来定位,需要定位的话可以自己开个 pprof 看下哪里消耗多了
|
![]() |
17
sunny1688 OP @qq1340691923 感谢
|
![]() |
19
catinsides 113 天前
golang 新手借问一下,我按照示例中的代码试了下不能跑通。
发现是 go get 的代码中不包含 server.WithHooks 这个函数,但是 github 中代码是 8 小时之前更新的。 说明 pkg.go.dev 到现在都没有更新代码? |
![]() |
20
sunny1688 OP @catinsides 抱歉,麻烦在拉取一下,是因为我没有发布新的 release
|