开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2008|回复: 23
收起左侧

[易源码分享] 基于Go语言Gin框架的Web服务器、WS服务器(更新)

[复制链接]
结帖率:38% (3/8)
发表于 2026-3-20 17:12:32 | 显示全部楼层 |阅读模式   北京市北京市
分享源码
界面截图:
是否带模块: 调用了模块
备注说明: -
本帖最后由 小苏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_服务器


打赏

记得打赏精币,煽情的剧本没了好几次写不动了

go源码编译流程.zip

1.36 KB, 下载次数: 28, 下载积分: 精币 -2 枚

new.zip

11.13 KB, 下载次数: 30, 下载积分: 精币 -2 枚

go源码

安装GCC编译器.zip

654 Bytes, 下载次数: 19, 下载积分: 精币 -2 枚

内存加载DLL.zip

16.2 KB, 下载次数: 22, 下载积分: 精币 -2 枚

圈猫小游戏主页.zip

5.55 KB, 下载次数: 18, 下载积分: 精币 -2 枚

404.zip

2.49 KB, 下载次数: 16, 下载积分: 精币 -2 枚

QQ20260320-170039.png

评分

参与人数 3好评 +3 精币 +6 收起 理由
jie也学易语言 + 1 + 2 支持开源~!感谢分享
quary + 1 + 2 开源精神必须支持~
藏梦阁 + 1 + 2 支持开源~!感谢分享

查看全部评分


本帖被以下淘专辑推荐:

结帖率:38% (3/8)
 楼主| 发表于 2026-3-28 00:33:01 | 显示全部楼层   北京市北京市
aiaixiaoye8 发表于 2026-3-26 10:12
有没有相关的教程啊

看原作者和迭代的作者,他们那里有
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)

签到天数: 4 天

发表于 2026-3-26 10:12:22 | 显示全部楼层   新疆维吾尔自治区乌鲁木齐市
有没有相关的教程啊
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)

签到天数: 4 天

发表于 2026-3-26 10:03:03 | 显示全部楼层   新疆维吾尔自治区乌鲁木齐市
就是动态渲染,go的gin有这个功能的。
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)
发表于 2026-3-23 21:37:17 | 显示全部楼层   河南省南阳市
小苏0826 发表于 2026-3-22 23:24
?你用js去实现就行啊,易语言搞不定吧,这是写后端的

就是动态渲染,go的gin有这个功能的。
[JavaScript] 纯文本查看 复制代码
在Go语言中,使用Gin框架渲染HTML模板通常涉及到几个步骤。下面我将详细介绍如何设置Gin框架以渲染HTML模板。

步骤 1: 安装Gin
首先,确保你已经安装了Gin。如果还没有安装,可以通过以下命令安装:

bash
Copy Code
go get -u github.com/gin-gonic/gin
步骤 2: 创建HTML模板文件
在你的Go项目目录中,创建一个templates文件夹,并在其中添加HTML文件。例如,创建一个index.html文件:

html
Copy Code
<!-- templates/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Gin HTML Example</title>
</head>
<body>
    <h1>{{.title}}</h1>
    <p>{{.content}}</p>
</body>
</html>
步骤 3: 配置Gin以使用HTML模板
在你的Go文件中,设置Gin以使用HTML模板。你需要使用LoadHTMLGlob或LoadHTMLFiles方法加载模板文件。

go
Copy Code
package main

import (
    "github.com/gin-gonic/gin"
)

func main() {
    router := gin.Default()

    // 使用LoadHTMLGlob加载templates目录下的所有HTML文件
    router.LoadHTMLGlob("templates/*")

    // 或者使用LoadHTMLFiles加载特定的HTML文件
    // router.LoadHTMLFiles("templates/index.html", "templates/other.html")

    router.GET("/", func(c *gin.Context) {
        c.HTML(200, "index.html", gin.H{
            "title":   "Gin and HTML",
            "content": "This is a simple example.",
        })
    })

    router.Run(":8080") // 监听并在 0.0.0.0:8080 上启动服务
}
步骤 4: 运行你的应用
保存你的Go文件并运行它。Gin将启动一个HTTP服务器,你可以在浏览器中访问http://localhost:8080/来查看你的HTML页面。

注意事项:
确保你的模板文件名和在LoadHTMLGlob或LoadHTMLFiles中指定的路径匹配。
使用{{.variable}}在HTML中插入Go变量。
确保你的模板文件编码是UTF-8,以避免出现乱码问题。
Gin的LoadHTMLGlob和LoadHTMLFiles方法在首次调用时加载模板,之后的请求将使用这些已加载的模板。如果你在运行时更改了模板文件,你可能需要重新启动你的应用或者考虑其他动态加载模板的方法。对于开发环境,你可以考虑在每次文件更改后自动重启应用。例如,使用air这样的工具可以帮助你在开发时自动重启应用。

回复 支持 反对

使用道具 举报

结帖率:100% (17/17)

签到天数: 1 天

发表于 2026-3-23 10:33:31 | 显示全部楼层   广东省深圳市
开源精神必须支持~
回复 支持 反对

使用道具 举报

结帖率:60% (3/5)

签到天数: 1 天

发表于 2026-3-23 09:16:23 | 显示全部楼层   山西省太原市
感谢大佬,学到了!
回复 支持 反对

使用道具 举报

结帖率:38% (3/8)
 楼主| 发表于 2026-3-22 23:24:41 | 显示全部楼层   北京市北京市
kevmagic 发表于 2026-3-22 03:34
比如传递参数,通过参数更换页面里面的数据

?你用js去实现就行啊,易语言搞不定吧,这是写后端的
回复 支持 反对

使用道具 举报

发表于 2026-3-22 10:24:52 | 显示全部楼层   重庆市重庆市
用过的最好用的
回复 支持 反对

使用道具 举报

签到天数: 6 天

发表于 2026-3-22 07:32:20 | 显示全部楼层   山东省青岛市
Go写服务真香啊,Gin+WS组合挺稳的,楼主更新勤快,点个赞!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表