Comments (26)
这个问题你之前好像发过issue,当时我们没有解决。
我觉得这个功能还是有必要支持一下的。我跟进一下。
你多个client task是访问不同的协议(http/mysql这些),还是相同的协议呢?
from workflow.
相同的协议,目前用的是tcpsocket+tls,支持这个功能后麻烦给我说下。
from workflow.
大佬,改完了吗
from workflow.
还没有。我尽量今晚出一个可用的版本。你到时候可以先从我的fork拉。
from workflow.
可能又要改设计了,没那么快可以完工。
from workflow.
新的PR:#1530
from workflow.
我测试了下有问题。我开了30个线程,线程里面会定时创建临时tls客户端任务给服务端发请求,只有第一轮请求的15个客户端收到了响应数据,其它的没有收到响应数据(append函数没走进去),接下来所有线程就彻底都收不到服务端的响应了。
另外请问下SSL_CTX*需要我在外面手动释放还是框架会自动释放。
from workflow.
我们期待是在task生命周期之内,用户确保SSL_CTX有效。
正确性问题我们再测一下。
from workflow.
先合并到主项目的ssl_ctx分支了。具体用法,你参考一下WFMySQLConnection里这个:
workflow/src/client/WFMySQLConnection.h
Line 67 in 34ac0c0
你把你的网络任务强传成WFComplexClientTask<MyRequest, MyResponse>类型,调用这个类的void set_ssl_ctx(SSL_CTX *)接口就可以了。ssl_ctx的生命周期需要覆盖task的生命周期。
from workflow.
我是这样创建的客户端任务:
WFCustomTask *task = WFNetworkTaskFactory<CustomRequest, CustomResponse>::create_client_task(m_isSSL ? TT_TCP_SSL : TT_TCP, (struct sockaddr *)&sockaddr, sizeof(sockaddr), ctx, 0, std::bind(&CTcpClient::process, this, _1));
这样也行吧
from workflow.
from workflow.
没事,我不着急,等你填上坑了我再用
from workflow.
你先试一下啊,现在也是可以用的。就是用这个函数:
workflow/src/factory/WFTaskFactory.h
Line 449 in 34ac0c0
我们也需要用户的使用建议才能确定怎么改。
from workflow.
我现在就是调用这个函数创建的任务,但是有我上面说的异常问题
static T *create_client_task(enum TransportType type,
const struct sockaddr *addr,
socklen_t addrlen,
SSL_CTX *ssl_ctx,
int retry_max,
std::function<void (T *)> callback);
from workflow.
我测试了下有问题。我开了30个线程,线程里面会定时创建临时tls客户端任务给服务端发请求,只有第一轮请求的15个客户端收到了响应数据,其它的没有收到响应数据(append函数没走进去),接下来所有线程就彻底都收不到服务端的响应了。
另外请问下SSL_CTX*需要我在外面手动释放还是框架会自动释放。
你是说这个问题吗?
from workflow.
是的。
用上面那个create_client_task创建任务后应该不需要再调用set_ssl_ctx来设置ctx吧
from workflow.
对,struct sockaddr + socklen 创建的,只能在create里设置,后面set_ssl_ctx无效。我看一下你说的问题。
from workflow.
@coderwxl 改了一点小问题,麻烦再试一下。觉得你说的现象有点奇怪,这边看不也会有这种问题。
from workflow.
我知道导致我上面说的异常原因了,是因为你这次改动没有使用连接池,导致每次都是新连接,但是服务端对连接数有限制,应该超过限制就会关闭新连接,从而导致后面就收不到服务端的响应了。
from workflow.
现在的代码还是没有复用连接吗?不应该啊。是不是你自定义协议没有调用set_keep_alive()?连接复用方面,和之前的没有什么区别。
from workflow.
不是我的问题,我只是调用不同的create_client_task函数,其它的没变:
from workflow.
你每次的ctx指针变了吗?不同的ctx(指针值),不会复用连接的。
from workflow.
可以了,我测了下没问题。
from workflow.
create_http_task能否也加上对ssl_ctx的支持
from workflow.
http的话,你可以模仿WFMySQLConnection的办法设置一下。可以自己搞个http client来创建任务,把ssl ctx封装进去。
如果加在我们的任务工厂里,那要加一堆函数。
from workflow.
好的,感谢大佬!
from workflow.
Related Issues (20)
- c++使用wfkafka 调用create_kafka_task崩溃 HOT 38
- 如何优雅的取消DAG中的后续图节点 HOT 4
- myssql cli 使用是否可以创建多个任务 HOT 34
- AcceptEx and GetAcceptExSockaddrs gives error on Windows HOT 2
- Windows与其他平台是单独release吗? 我看11.4没有windows的tag, vcpkg也只有10.9 HOT 2
- 能否给xmake中的workflow加上windows的支持 HOT 6
- redis zadd命令使用,set_request第二个参数是vector<stirng>, 没法添加int类型 score HOT 36
- Turkish Character Support on get_parsed_body HOT 5
- Get All Headers of HTTP Request HOT 5
- http请求获取对方应答的数据接口是哪一个 HOT 1
- 能支持mqtt或zmq吗 HOT 1
- http server服务,使用WFGoTask处理请求结束后线程数没有降低 HOT 7
- 机器的连接达到了上限,如何关闭TIME_WAIT连接。 HOT 2
- 请教一个kafka 11错误码的问题 HOT 6
- workflow 如何支持 fast-dds? HOT 1
- http请求不响应问题 HOT 2
- 关于redis sub/pub问题 HOT 12
- workflow自定义协议如何分包发送消息 HOT 5
- 在使用kafka库组件时,突然出现 state=67, errorno= 5003 的错误 HOT 12
- workflow TCP服务端为什么发送数据时主动断开连接 HOT 21
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from workflow.