Go语言实现一个简单的并发聊天室

时间:2025-02-24 07:23:32

写在前面

Go语言在很多方面天然的具备很多便捷性,譬如网络编程,并发编程。而通道则又是Go语言实现并发编程的重要工具,因为其承担着通道之间互相通信的重任。并且因为其本身就是并发安全的,所以在某些场景下是非常好用的。

并发聊天服务器

这里主要是实现一个简单的并发聊天服务器。首先,客户端可以在服务器中注册自己的信息(登录以及退出),客户端发出的所有的信息由服务器向各个客户端进行转发,或者换句话说是广播。

具体代码

服务端

说的再多,没有代码简单明了,直接上代码~

package main

import (
	"bufio"
	"fmt"
	"log"
	"net"
)
type client chan <- string //定义一个单向的向外发送数据的通道

var (
	entering = make(chan client)
	leaving = make(chan client)
	messages = make(chan string)
)

func main() {
   
	listener, err := net.Listen("tcp","localhost:8000")
	if err != nil {
   
		log.Fatal