{"id":20837422,"url":"https://github.com/xdwangwei/go_chatroom","last_synced_at":"2025-10-06T01:15:09.658Z","repository":{"id":105276289,"uuid":"453678009","full_name":"xdwangwei/go_chatroom","owner":"xdwangwei","description":"基于GO语言的TCP简易聊天室小项目，适合刚学习完Go基础的小伙伴玩耍哦！","archived":false,"fork":false,"pushed_at":"2022-01-30T12:54:10.000Z","size":1658,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-12T09:43:35.336Z","etag":null,"topics":["chatroom","client-server","go","golang","socket","tcp-socket"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xdwangwei.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-30T12:46:42.000Z","updated_at":"2024-05-29T01:14:15.000Z","dependencies_parsed_at":"2023-05-22T05:15:14.991Z","dependency_job_id":null,"html_url":"https://github.com/xdwangwei/go_chatroom","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/xdwangwei/go_chatroom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xdwangwei%2Fgo_chatroom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xdwangwei%2Fgo_chatroom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xdwangwei%2Fgo_chatroom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xdwangwei%2Fgo_chatroom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xdwangwei","download_url":"https://codeload.github.com/xdwangwei/go_chatroom/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xdwangwei%2Fgo_chatroom/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278545050,"owners_count":26004385,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chatroom","client-server","go","golang","socket","tcp-socket"],"created_at":"2024-11-18T01:07:29.690Z","updated_at":"2025-10-06T01:15:09.651Z","avatar_url":"https://github.com/xdwangwei.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"### 一、项目介绍\n\n此项目（严格来说算不上项目）是在学习 golang 的过程中写的一个基于 tcp协议的简易聊天室，有兴趣可以看看，虽然比较小，但还是用到了很多东西。\n\n如果看不懂里面的逻辑呢，看看[视频教程](https://www.bilibili.com/video/BV1ME411Y71o?p=316)吧，只是我的封装可能稍微有一点不一样哦。\n\n### 二、关键技术\n\n- gorouting （go 协程当然必不可少了，维持一个通信任务，接收啊发送消息什么的）\n- go-redis （其实可以不用redis，但是为了结合所学知识，所以用redis来进行数据存储，主要是用于用于的登录/注册啊什么的）\n- 借鉴了 MVC 模式，不过分离的不太好。\n- 其他好像没什么值得说的了吧\n\n### 三、实现功能\n\n- 客户注册、登录（不允许重复登录，重复注册，都有校验以及错误提示）\n- 在线用户列表查询（可以看到当前系统有哪些人在线，除了自己）\n- 群聊消息（发送一条消息，当然在线的人都能收到，除了自己）\n- 私聊消息（可以私聊某一个人，若这个人不存在或者不在线，也会有相应提示）\n- 退出系统/退出登录（退出登录后，其他人的在线列表会被更新，此时再次查看在线列表就看不到我啦）\n- 待续....\n\n### 四、注意事项\n\n- 下载源代码后，请修改 redis.go 中redis的连接信息。也就是 host:port， 记得改为你自己的。\n\n- 记得先安装 [go-redis](https://github.com/go-redis/redis)，我这里是通过 go mod 装的，就是 进入 GOPATH 目录下，执行下面这个命令\n\n  ```sh\n  go get github.com/go-redis/redis/v8\n  ```\n\n- 记得把文件夹放入你的 GOPATH/src 路径下，项目可以通过 goland 打开，goland 能够直接运行，所以挺方便的。\n\n- 更好的方式是分别编译客户端和服务端代码，然后得到可执行文件，就可以打开cmd窗口运行啦，此时可以启动多个客户端哦。\n\n  ```sh\n  # 进入 GOPATH/src，分别执行\n  go build -o server.exe .\\tcpchat\\server\\main\\\n  go build -o client.exe .\\tcpchat\\client\\main\\\n  ```\n\n- 还是建议学习一下 go-redis 的基本使用 和 json 格式呢。\n\n### 五、运行截图\n\n![image-20220130202434734](http://typora.iwangwei.top/img/image-20220130202434734.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxdwangwei%2Fgo_chatroom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxdwangwei%2Fgo_chatroom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxdwangwei%2Fgo_chatroom/lists"}