# ripple-server **Repository Path**: NULLABLE0211/ripple-server ## Basic Information - **Project Name**: ripple-server - **Description**: 发布订阅基础服务的服务器端。请联系唐震,邮箱地址:tangzhen12@otcaix.iscas.ac.cn - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-10-12 - **Last Updated**: 2024-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ripple-server #### 介绍 发布订阅基础服务的服务器端。请联系唐震,邮箱地址:tangzhen12@otcaix.iscas.ac.cn #### 软件架构 1. include: 头文件目录 2. ssl: https证书 3. static: 网页前端文件 - ui2cpp.py:将前端文件转换为cpp资源文件,可直接编译至可执行文件中 4. src - testFileDir: 临时目录,存放从nats-server中拉取到的文件 - controller.cpp: 网站后端控制器 - frontend_files.cpp: 前端资源文件 - nats_c2s.cpp: 网站与nats-server交互逻辑 5. [myquic](#quic) - certs: 证书文件 - include: 头文件目录 - lib: 静态库(其中xquic需要的libssl和libcrpto与普通ssl库有区别) - src: 代码文件 #### 使用方法 - make http: 在release目录下生成可执行文件,nats-server在主程序中启动,接收来自main的参数;cpp-http-server作为子线程启动。 - make https: cpp-https-server,需要系统提供openssl支持,server.crt和server.key的位置为: _启动位置/ssl/server.*_ - ./ripple_server(_https) [-c] [ripple.conf]: 缺省参数时读取ripple-server同一目录下的"ripple.conf"文件。交互网站端口为8080 #### 注 - 每次Download或者Delete之后,需要等待10s左右,查看文件列表功能才‘真正’可用。(可以从本地中获取,但10s期间无法从服务器中拉取消息) - 文件过大时上传有可能失败(无法上传到jetstream中),理论上67MB为最大值。 - 文件暂时需要保存到本地,因此为了防止文件上传攻击,后缀为['asp', 'asa', 'cdx', 'cer', 'php', 'aspx', 'jsp', 'html']的文件不可用 #### QUIC - server 默认监听地址为: 127.0.0.1:8443. 启动流程为 server_init()->listen(). - client 目前可实现发送数据逻辑. 启动流程未 client_init()->create_stream()->send_data()->stream_close(). (stream_close()发送一个空数据通知server此流读写完毕,并不是真正的关闭流) - 当存在历史session和token时,优先使用session和token恢复历史连接并以0-rtt发送数据, 若没有历史session和token,创建stream后直接发送数据会失败,client端将保存历史数据,待连接初始化完成后再次发送。 - 在初始化类示例时建议使用 new mQUIC() 初始化。(有可能出现内存bug)