## web 聊天室程序
这是一个基于 Gin 框架和 WebSocket 实现的简单聊天室应用程序。它使用了 MySQL 数据库保存用户信息和聊天记录,并使用 Gorilla WebSocket 库实现了 WebSocket 通信。
### 主要功能:
* 用户注册和登录
* 用户通过 WebSocket 连接到聊天室
* 实时消息广播给所有在线用户
* 用户在聊天室中发送消息
* 聊天室主页面,展示所有在线用户
* 保存聊天记录到 MySQL 数据库
* 离线消息读取
* 错误处理和日志记录
* 安全防范措施,如防止跨站脚本攻击和 SQL 注入攻击
### 代码结构
* 定义了全局变量,包括 WebSocket 连接映射、消息结构体(包含发送者和消息内容)以及消息通道。
* 在 `main()` 函数中,首先建立数据库连接并测试连接。接着,配置了 Gin 路由以处理登录、注册和聊天页面的请求。定义了处理 WebSocket 连接的 `wshandler()` 函数,用于处理客户端发送的消息并广播到所有在线用户。
* 定义了 `sendUserList()` 函数,用于获取在线用户列表并发送给所有连接的客户端。
* 在 `main()` 函数中启动了一个协程,用于从全局消息通道中读取消息并将消息保存到数据库以及广播给所有在线用户。
* 最后,运行 Gin 路由,监听 8080 端口。
### 改进方向
增加错误处理、日志记录、安全性方面的改进等。此外,密码的存储应使用加密方法(如 bcrypt 等)以保证安全性。
### 目录结构
``` arduino
.
├── main.go
├── static
│ ├── css
│ │ └── ...
│ ├── images
│ │ └── avator.png
│ └── js
│ └── ...
└── templates
├── chat.html
├── index.html
├── login.html
└── register.html
```
### 教程
#### 将代码克隆到本地
```
git clone git@github.com:ElandWoo/chatroom.git
```
#### 安装必要的依赖项
代码使用了以下Go包:
* github.com/gin-gonic/gin
* github.com/go-sql-driver/mysql
* github.com/gorilla/websocket
使用go get命令安装这些包,例如:
``` go
go get -u github.com/gin-gonic/gin
go get -u github.com/go-sql-driver/mysql
go get -u github.com/gorilla/websocket
```
#### 数据库配置
确保您的MySQL数据库已设置并运行。
建立chatroom数据库
``` sql
CREATE DATABASE chatroom;
```
并在其中创建users和messages表:
``` sql
USE chatroom;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL
);
CREATE TABLE messages (
id INT AUTO_INCREMENT PRIMARY KEY,
sender VARCHAR(255) NOT NULL,
message TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
USE chatroom;
SHOW TABLES;
SELECT * FROM users;
SELECT * FROM messages;
```
将main.go:39行配置成自己的mysql数据库
``` go
db, err := sql.Open("mysql", "user:password@tcp(username:port)/chatroom")
```
#### 添加静态文件
如果你想在项目中添加自己的静态文件,确保你的静态文件(CSS、JavaScript、图片等)位于正确的目录中。
代码将静态文件目录设置为./static,你还需要确保模板文件位于名为templates的目录中。
#### 编译运行
1. 在浏览器中输入[http://localhost:8080](http://localhost:8080)查看是否正常启动;
![./static/images/index.png](./static/images/index.png)
2. 运行您的程序并尝试使用Web浏览器访问应用程序。首先访问[http://localhost:8080/register](http://localhost:8080/register), 尝试注册一个新用户;
![./static/images/register.png](./static/images/register.png)
3. 然后,访问[http://localhost:8080/register](http://localhost:8080/register), 尝试使用刚刚注册的用户登录。
![./static/images/login.png](./static/images/login.png)
4. 开始[聊天](http://localhost:8080/chat)
![./static/images/chat.png](./static/images/chat.png)
没有合适的资源?快使用搜索试试~ 我知道了~
web 聊天室程序(应用go、html、js、css, gin、websocket)
共19个文件
png:6个
html:4个
xml:2个
需积分: 0 8 下载量 182 浏览量
2023-05-07
22:31:37
上传
评论 1
收藏 807KB ZIP 举报
温馨提示
这是一个基于 Gin 框架和 WebSocket 实现的简单聊天室应用程序。它使用了 MySQL 数据库保存用户信息和聊天记录,并使用 Gorilla WebSocket 库实现了 WebSocket 通信。 主要功能: * 用户注册和登录 * 用户通过 WebSocket 连接到聊天室 * 实时消息广播给所有在线用户 * 用户在聊天室中发送消息 * 聊天室主页面,展示所有在线用户 * 保存聊天记录到 MySQL 数据库 * 离线消息读取 * 错误处理和日志记录 * 安全防范措施,如防止跨站脚本攻击和 SQL 注入攻击
资源推荐
资源详情
资源评论
收起资源包目录
chatroom-main.zip (19个子文件)
chatroom-main
go.mod 1KB
go.sum 8KB
readme.md 4KB
templates
register.html 2KB
login.html 2KB
index.html 1017B
chat.html 6KB
.idea
.name 8B
chatroom.iml 322B
vcs.xml 180B
modules.xml 268B
.gitignore 176B
static
images
login.png 41KB
avator.png 254KB
chat.png 88KB
register.png 55KB
index.png 204KB
img.png 204KB
main.go 6KB
共 19 条
- 1
资源评论
温雅小公子
- 粉丝: 5
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring Boot框架的报表管理系统.zip
- (源码)基于树莓派和TensorFlow Lite的智能厨具环境监测系统.zip
- (源码)基于OpenCV和Arduino的面部追踪系统.zip
- (源码)基于C++和ZeroMQ的分布式系统中间件.zip
- (源码)基于SSM框架的学生信息管理系统.zip
- (源码)基于PyTorch框架的智能视频分析系统.zip
- (源码)基于STM32F1的Sybertooth电机驱动系统.zip
- (源码)基于PxMATRIX库的嵌入式系统显示与配置管理.zip
- (源码)基于虚幻引擎的舞蹈艺术节目包装系统.zip
- (源码)基于Dubbo和Redis的用户中台系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功