本帖最后由 小苏0826 于 2026-3-20 18:07 编辑
基于Go语言Gin框架的Web、WS服务器(更新)
初代楼主:a1401449265
迭代楼主:冬夏
项目定位
因为看到有人在冬夏大佬的帖子中留言想要自定义404页面的功能的,刚好我也需要就研究了一下
我是go和c都不会的,全靠AI帮我阅读理解,最后也算是成功了,功能测试都没问题
基于 Go 语言 gin + gorilla/websocket 的高性能 Web 与 WebSocket 服务器 DLL。通过 CGO 导出标准 C 接口,供易语言、C/C++ 等调用,单文件、无依赖、协程级并发。
核心特点
| 维度 |
说明 |
| 高性能架构 |
gin + gorilla/websocket,读写协程分离,无锁设计,TCP Keep‑Alive 自动保活 |
| 安全防护 |
IP 与全局连接限流(默认100/10000)、非HTTP流量过滤、包大小限制、RSV位校验、多层超时控制 |
| 零内存泄漏 |
C 内存自动回收(defer + 临时指针记录),连接生命周期闭环 |
| WebSocket 全支持 |
分片重组、Ping/Pong 心跳(30s/60s)、Close 处理、RFC 规范校验 |
| CGO 跨语言接口 |
标准 C 回调(__stdcall),导出函数仅暴露基本类型,易语言可直接调用 |
| 生产级稳定性 |
Panic 隔离、优雅启停、非阻塞发送背压处理 |
新增功能:智能 404 自定义系统
| 模式 |
函数 |
说明 |
| 文件模式 |
SetNotFoundFile |
直接引用静态文件(HTML/图片等) |
| 文本模式 |
SetNotFoundContent |
动态传入文本/JSON/HTML |
| 二进制模式 |
SetNotFoundContentEx |
返回图片、图标等二进制数据 |
配套函数:
GetNotFoundConfig – 获取当前配置(JSON,二进制自动 Base64)
ClearNotFoundConfig – 恢复默认 "Not Found" 文本
_free – 释放配置返回的内存
价值:告别千篇一律的 404,支持个性化错误页面与二进制内容,提升用户体验,且完全向后兼容。
可配置项(运行时调整)
| 配置项 |
默认值 |
作用 |
| 发送队列大小 |
64 |
防内存积压 |
| IP 最大连接数 |
100 |
防 CC |
| 全局最大连接数 |
10000 |
过载保护 |
| HTTP/WS 包大小 |
4MB |
防恶意大包 |
| RSV 位允许非零 |
否 |
符合 RFC,可关闭 |
| Worker 线程数 |
CPU 核数 |
动态调整并发能力 |
总结
这套代码将 Go 的高并发、内存安全优势,通过 CGO 层无缝提供给易语言等传统语言。在继承前两版稳定架构的基础上,新增了灵活的三模式 404 自定义能力,使服务器既高性能又具备现代 Web 服务的个性化表现。
下载与支持
附带了一个AI写的404html,跟AI写的圈猫小游戏html
搞了很多次编辑写好上传保存就没了,已经不想打字了,累了!
能传上来的文件其实可以自己编译了,考虑到各位大神比较懒,传在123盘了,自己下载
有不合适的地方可以在个人签名中的q群交流(限制了入群等级,等级12以上秒进)
文件大传不了,123盘链接下载
『来自123云盘用户易_小梦的分享』Gin_web_服务器
打赏
记得打赏精币,煽情的剧本没了好几次写不动了
|