chat_package

package module
v0.0.0-...-1af8790 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 28, 2025 License: BSD-2-Clause Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var MessageLog = &Logger{}
View Source
var RoomMgr = &RoomManager{
	Rooms:  make(map[string]*ChatRoom),
	Client: nil,
}
View Source
var UserLog = &Logger{}

Functions

func Add_friend

func Add_friend(client *mongo.Client, adder *UserManager) http.HandlerFunc

func ConnectMongoDB

func ConnectMongoDB() (*mongo.Client, error)

func CreateRoom

func CreateRoom(client *mongo.Client, rm *RoomManager) http.HandlerFunc

func EnableCORS

func EnableCORS(w http.ResponseWriter)

func GetFriends

func GetFriends(client *mongo.Client, userManager *UserManager) http.HandlerFunc

func GetRooms

func GetRooms(client *mongo.Client, userManager *UserManager) http.HandlerFunc

func JoinUser

func JoinUser(client *mongo.Client, rm *RoomManager) http.HandlerFunc

func LoadRoomsFromDB

func LoadRoomsFromDB(mgr *RoomManager)

func LoadWhileRunning

func LoadWhileRunning(mgr *RoomManager)

func RegisterServer

func RegisterServer(client *mongo.Client) http.HandlerFunc

func RegisterUser

func RegisterUser(client *mongo.Client, username string)

Types

type ChatMessage

type ChatMessage struct {
	Username  string    `json:"username" bson:"username"`
	Message   string    `json:"message" bson:"message"`
	RoomID    string    `json:"room_id" bson:"room_id"`
	Timestamp time.Time `json:"timestamp" bson:"timestamp"`
}

type ChatRoom

type ChatRoom struct {
	Id      string // identifier
	Clients map[*Client]bool
	Mu      sync.RWMutex
}

type Client

type Client struct {
	Username string // identifier
	Conn     *websocket.Conn
	Rooms    map[string]*ChatRoom
	Friends  map[string]*Client
	Mu       sync.RWMutex
}

func (*Client) BroadcastToRoom

func (c *Client) BroadcastToRoom(roomID string, message map[string]string)

func (*Client) LeaveRoom

func (c *Client) LeaveRoom(roomID string)

type Logger

type Logger struct {
	Mu     sync.Mutex
	Client *mongo.Client
}

func (*Logger) LogMessage

func (ml *Logger) LogMessage(msg ChatMessage) error

type MessageCollection

type MessageCollection struct {
	MessageCol *mongo.Collection
	Mu         sync.Mutex
}

type RoomManager

type RoomManager struct {
	Rooms  map[string]*ChatRoom
	Mu     sync.RWMutex
	Client *mongo.Client
}

handles all chat room operations

func (*RoomManager) ConnectToRoom

func (rm *RoomManager) ConnectToRoom(client *Client, room *ChatRoom)

func (*RoomManager) CreateRoom

func (rm *RoomManager) CreateRoom(roomID string)

func (*RoomManager) GetRoom

func (rm *RoomManager) GetRoom(roomID string) *ChatRoom

func (*RoomManager) JoinRoom

func (rm *RoomManager) JoinRoom(c *Client, room *ChatRoom)

func (*RoomManager) RemoveRoom

func (rm *RoomManager) RemoveRoom(roomID string)

type UserManager

type UserManager struct {
	Mu     sync.Mutex
	Client *mongo.Client
}

func (*UserManager) AddFriend

func (adder *UserManager) AddFriend(c *Client, friend string)

func (*UserManager) GetFriends

func (adder *UserManager) GetFriends(c *Client) []string

func (*UserManager) GetRooms

func (adder *UserManager) GetRooms(c *Client) []string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL