简单的聊天室实现
This commit is contained in:
parent
481b45aa07
commit
017dec9c86
|
@ -0,0 +1,35 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/kercylan98/minotaur/server"
|
||||
"github.com/kercylan98/minotaur/utils/synchronization"
|
||||
)
|
||||
|
||||
func main() {
|
||||
connections := synchronization.NewMap[string, *server.Conn]()
|
||||
|
||||
srv := server.New(server.NetworkWebsocket, server.WithWebsocketWriteMessageType(server.WebsocketMessageTypeText))
|
||||
srv.RegConnectionOpenedEvent(func(srv *server.Server, conn *server.Conn) {
|
||||
for _, c := range connections.Map() {
|
||||
c.Write([]byte(fmt.Sprintf("%s 加入了聊天室", conn.GetID())))
|
||||
}
|
||||
connections.Set(conn.GetID(), conn)
|
||||
conn.Write([]byte("欢迎加入"))
|
||||
})
|
||||
srv.RegConnectionClosedEvent(func(srv *server.Server, conn *server.Conn) {
|
||||
if connections.DeleteExist(conn.GetID()) {
|
||||
for id, c := range connections.Map() {
|
||||
c.Write([]byte(fmt.Sprintf("%s 退出了聊天室", id)))
|
||||
}
|
||||
}
|
||||
})
|
||||
srv.RegConnectionReceiveWebsocketPacketEvent(func(srv *server.Server, conn *server.Conn, packet []byte, messageType int) {
|
||||
for _, c := range connections.Map() {
|
||||
c.Write([]byte(fmt.Sprintf("%s: %s", conn.GetID(), string(packet))))
|
||||
}
|
||||
})
|
||||
if err := srv.Run(":9999"); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue