Update about-connection-context.md

This commit is contained in:
liyingxin
2020-07-31 00:53:53 +08:00
committed by GitHub
parent 4b71f5f112
commit ccc73b281c

View File

@@ -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不会并发。