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)
- 咨询curl向workflow server上传文件,workflow server如何读取文件内容 HOT 2
- httpServerTask的回调函数中设置响应会回复默认响应 HOT 4
- 关于wait_group的详细用法 HOT 26
- 关于workflow TCP连接获取连接地址以及端口问题 HOT 1
- nossl分支tutorial make报错 HOT 4
- 关于GPL许可证兼容性的疑虑 HOT 1
- 支持PostgreSQL协议的讨论帖 HOT 17
- 关于mysql事务的回滚问题 HOT 3
- workflow充当HTTP网关时数据量太大就收不全 HOT 28
- workflow是否支持RPC协议? HOT 1
- WFNetworkTask http 服务怎样获取 post 请求的数据 HOT 2
- 咨询头文件报错问题 HOT 2
- handler_threads配置的问题 HOT 3
- 如何使用wf实现多个任务队列的调度 HOT 5
- thrdpool 如何实现动态减少线程数 HOT 5
- c++使用wfkafka 调用create_kafka_task崩溃 HOT 38
- 如何优雅的取消DAG中的后续图节点 HOT 2
- myssql cli 使用是否可以创建多个任务 HOT 29
- AcceptEx and GetAcceptExSockaddrs gives error on Windows HOT 2
- Windows与其他平台是单独release吗? 我看11.4没有windows的tag, vcpkg也只有10.9 HOT 1
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.