mirror of
https://github.com/sogou/workflow.git
synced 2026-02-08 01:33:17 +08:00
Update about-connection-context.md
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
|
||||
连接上下文是使用本框架编程的一个高级课题。使用上会有一些复杂性。
|
||||
从之前的示例里可以看出,无论是client还是server任务,我们并没有手段指定使用的具体连接。
|
||||
但是有一些业务场景,特别是server端,可能是需要维护连接状态的。也就是说我们需要把一段上下为和连接绑定。
|
||||
我们的框架里,是提供了连接上下为机制给用户使用的。
|
||||
但是有一些业务场景,特别是server端,可能是需要维护连接状态的。也就是说我们需要把一段上下文和连接绑定。
|
||||
我们的框架里,是提供了连接上下文机制给用户使用的。
|
||||
|
||||
# 连接上下文的应用场景
|
||||
|
||||
@@ -22,7 +22,7 @@ http协议可以说是一种完全无连接状态的协议,http会话,是通
|
||||
# 使用连接上下文的方法
|
||||
|
||||
我们需要强调的是,一般情况下只有server任务需要使用连接上下文,并且只需要在process函数内部使用,这也是最安全最简单的用法。
|
||||
但是,任务在callback里也可以使用或修改连接上下文,只是使用的时候需要考虑并发的问题。我们会详细的讨论相关问题。
|
||||
但是,任务在callback里也可以使用或修改连接上下文,只是使用的时候需要考虑并发的问题。我们会详细地讨论相关问题。
|
||||
任何网络任务都可以调用接口获得连接对象,进而获得或修改连接上下文。在[WFTask.h](../src/factory/WFTask.h)里,调用如下:
|
||||
~~~cpp
|
||||
template<class REQ, class, RESP>
|
||||
@@ -59,10 +59,10 @@ WFConnection的test_set_context(),就是为了解决callback里使用连接上
|
||||
|
||||
# 示例:减少Http/1.1的请求header传输
|
||||
|
||||
http协议可以说是一个连接无状态的协议,同一个连接上,每一次请求都必须发生完整的header。
|
||||
http协议可以说是一个连接无状态的协议,同一个连接上,每一次请求都必须发送完整的header。
|
||||
假设请求里的cookie非常大,那么这显然就增加了很大的数据传输量。我们可以通过server端连接上下文来解决这个问题。
|
||||
我们约定http request里的cookie,对本连接上所有后续请求有效,后续请求header里可以不再发送cookie。
|
||||
一下是server端代码:
|
||||
以下是server端代码:
|
||||
~~~cpp
|
||||
void process(WFHttpTask *server_task)
|
||||
{
|
||||
@@ -104,5 +104,5 @@ int some_function()
|
||||
...
|
||||
}
|
||||
~~~
|
||||
在这个示例中,当http task是连接上的首个请求是,我们设置了cookie。如果不是首个请求,根据约定,不再设置cookie。
|
||||
在这个示例中,当http task是连接上的首个请求时,我们设置了cookie。如果不是首个请求,根据约定,不再设置cookie。
|
||||
另外,prepare函数里,可以安全的使用连接上下文。同一个连接上,prepare不会并发。
|
||||
|
||||
Reference in New Issue
Block a user