Skip to content

Commit

Permalink
Update about-connection-context.md
Browse files Browse the repository at this point in the history
  • Loading branch information
holmes1412 authored Jul 30, 2020
1 parent 4b71f5f commit ccc73b2
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions docs/about-connection-context.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

连接上下文是使用本框架编程的一个高级课题。使用上会有一些复杂性。
从之前的示例里可以看出,无论是client还是server任务,我们并没有手段指定使用的具体连接。
但是有一些业务场景,特别是server端,可能是需要维护连接状态的。也就是说我们需要把一段上下为和连接绑定
我们的框架里,是提供了连接上下为机制给用户使用的
但是有一些业务场景,特别是server端,可能是需要维护连接状态的。也就是说我们需要把一段上下文和连接绑定
我们的框架里,是提供了连接上下文机制给用户使用的

# 连接上下文的应用场景

Expand All @@ -22,7 +22,7 @@ http协议可以说是一种完全无连接状态的协议,http会话,是通
# 使用连接上下文的方法

我们需要强调的是,一般情况下只有server任务需要使用连接上下文,并且只需要在process函数内部使用,这也是最安全最简单的用法。
但是,任务在callback里也可以使用或修改连接上下文,只是使用的时候需要考虑并发的问题。我们会详细的讨论相关问题
但是,任务在callback里也可以使用或修改连接上下文,只是使用的时候需要考虑并发的问题。我们会详细地讨论相关问题
任何网络任务都可以调用接口获得连接对象,进而获得或修改连接上下文。在[WFTask.h](../src/factory/WFTask.h)里,调用如下:
~~~cpp
template<class REQ, class, RESP>
Expand Down Expand Up @@ -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)
{
Expand Down Expand Up @@ -104,5 +104,5 @@ int some_function()
...
}
~~~
在这个示例中,当http task是连接上的首个请求是,我们设置了cookie。如果不是首个请求,根据约定,不再设置cookie。
在这个示例中,当http task是连接上的首个请求时,我们设置了cookie。如果不是首个请求,根据约定,不再设置cookie。
另外,prepare函数里,可以安全的使用连接上下文。同一个连接上,prepare不会并发。

0 comments on commit ccc73b2

Please sign in to comment.