libhv
libhv copied to clipboard
🔥 比libevent/libuv/asio更易用的网络库。A c/c++ network library for developing TCP/UDP/SSL/HTTP/WebSocket/MQTT client/server.
我在我的项目中使用了libhv和libwireshark-dev, 发现编译时LOG_LEVEL_DEBUG等宏命名冲突, 详见第62行和第50行, 建议libhv日志宏加上前缀"HV_".
能否支持传统国密双证书加密,tlcp模式
会遇见需要同时侦听多个端口的情况,在examples里面没有找到相关的用法,不知道是否支持。
cmake编译的lib库 request请求网页正常,用samples里面wget的代码,下载文件失败 linux测试  另外windows下不能加载静态库编译, 
router.cpp示例中: https://github.com/ithewei/libhv/blob/0325f2d07f10986139174ff2db75dd151c09b605/examples/httpd/router.cpp#L131-L134 这里路由占位符的解析是在Handler::restful中调用了HttpContext的param,即HttpRequest的GetParam: https://github.com/ithewei/libhv/blob/0325f2d07f10986139174ff2db75dd151c09b605/examples/httpd/handler.cpp#L171-L179 这个方法是查询参数的解析,这样合在一起会导致这里占位符的解析覆盖了查询参数的解析,如对于/api/test/{str},会导致 GET http://ip:port/api/test/xxx?str=yyy 后,服务器获取查询参数param("str")时,xxx会覆盖yyy
使用nginx代理websocket时发现hv在回复101时Content-Length为0,导致nginx将连接关闭。 做了两处修改,请 @ithewei 帮忙review下 1、 文件:HttpMessage.h 代码: ``` size_t ContentLength() { if (content_length == 0) { FillContentLength(); } return content_length; } ``` 改为: ``` size_t ContentLength() { if (content_length ==...
目前Libhv中的mqtt client在使用过程存在三个问题: - 1、mqtt login没有超时机制,在mqtt_client_connect的时候,有设置一个hio_connect的超时定时器: ``` if (cli->connect_timeout > 0) { hio_set_connect_timeout(io, cli->connect_timeout); } ``` 但是login没有,假如在hio_connet成功之后,就会关闭connect超时定时器,但是万一此时tcp链路断了,Login不成功,是没有办法有时间限制login的时长,然后去断开重连再login的。 问一下博主,是推荐在Login函数内部去加定时器呢?还是在外部,启动login的时候,加个htimer去判断cli->connected值呢? - 2、没有发送失败重连机制:假如mqtt conn成功了,然后ping周期设得比较长,比如说1分钟,但是publish报文到server端的周期比较快,比如是几秒或10几秒种,但是此时mqtt是断开的(!connected,return -2),那么是会返回-2,这种情况也没有触发重连;或者第二种情况如果ping fail的次数还没有到三次,connected还是=1,但是此时tcp链路已经断了,发送时nwrite会返回长度,事实上并没有发送出去给server,这种情况也没有触发重连 - 3、mqtt client在连接服务器时,hio_connect会莫名奇妙的coredump,相同的代码运行几百次可能会出现一次,出错时的堆栈信息如下:(屏蔽了一些用户信息哈) 
protocol/icmp在IPv6下无法使用, sendto调用正常返回,windows下recvfrom时错误代码10060, linux下错误代码 11
建议 hmutex.h 添加 try
使用cmake编译hv库时 如果使用with_evpp=off那么不会复制 hmap.h hstring.h等头文件 但是如果把hv.h加入到自己的cpp代码中 就会因为找不到hmap.h hstring.h等文件编译错误