上传文件，算是一种场景应用了。大文件（或大数据块）上传时，可进行配置优化：

* 服务端
  * 处理完成后，执行释放动作 message.release()
* 客户端
  * 使用更小的分片大小（比如 1M）

### 1、客户端


```python
async def main():
    #::打开客户端会话（使用更小的分片大小，可以节点内存）
    clientSession = await (SocketD.create_client("sd:ws://127.0.0.1:8602/?u=a&p=2")
                            .config(lambda c : c.fragment_size(1024 * 1024))
                            .open())

    # 发送 + 元信息
    await clientSession.send("/demo",  StringEntity("{user:'noear'}").meta_put("Trace-Id", StrUtils.guid()));
    # 发送文件
    with open("/data/user.jpg", "rb") as f:
        await clientSession.send("/demo2",  FileEntity(f, "user.jpg"))
```

### 2、服务端

```python
async def on_message(session:Session, message:Message):
    fileName = message.meta(EntityMetas.META_DATA_DISPOSITION_FILENAME);

    if fileName is not None:
        with open("/data/upload/user.jpg", "wb") as f:
            f.write(message.data())
    else:
        log.info(str(message))


async def main():
    #::启动服务端
    await (SocketD.create_server("sd:ws")
            .config(lambda c : c.port(8602))
            .listen(EventListener().do_on_message(on_message))
            .start())
```
