eddycjy / go-programming-tour-book-comments

go-programming-tour-book-comments
1 stars 1 forks source link

基于 TCP 的聊天室 | Go 语言编程之旅 #24

Open utterances-bot opened 3 years ago

utterances-bot commented 3 years ago

基于 TCP 的聊天室 | Go 语言编程之旅

4.1 基于 TCP 的聊天室 本节通过命令行来模拟基于 TCP 的简单聊天室。 本程序可以将用户发送的文本消息广播给该聊天室内的所有其他用户。该服务端程序中有四种 goroutine:main goroutine 和 广播消息的 goroutine,以及每一个客户端连接都会有一对读和写的 goroutine。 先在本地创建一个项目(若为 Windows 系统,可根据实际情况自行调整项目的路径): $ mkdir -p $HOME/go-programming-tour-book/chatroom $ cd $HOME/go-programming-tour-book/chatro

https://golang2.eddycjy.com/posts/ch4/01-tcp/

fyyang commented 3 years ago

Elibool commented 2 years ago

会,每个客户端链接进来后,将会创建两个 go 程, 两个 go 程都握有 os 句柄;瓶颈在于当前系统可打开的 os 资源数

joewongex commented 2 years ago

4)将该新用户写入全局用户列表,也就是聊天室用户列表,这里通过 channel 来写入,避免了锁。注意,这里和 3)的顺序不能反,否则自己会收到自己到来的消息提醒;(当然,我们也可以做消息过滤处理)

这里并不能通过代码的顺序来确保自已不会收到自已到来的消息提醒,因为你不知道系统会先运行哪个goroutine

oYto commented 1 year ago

文章中的UserID函数和user.String()方法需要自己实现吗

11wangdachui9527 commented 1 year ago

user的ID每次加1是怎么实现的?