owncast/core/chat/chat.go
Gabe Kangas 4d2066a76d
Start cleaning up linter errors. (#358)
* Start cleaning up linter errors. For #357

* Fix unmarshalling NullTime values

* More linter fixes

* Remove commented code

* Move defer up

* Consolidate error check lines

* Move error check to make sure row iteration was successful

* Cleaner error check + do not recreate pipe if it exists

* Consolidate hashing to generate client id
2020-11-14 18:39:53 -08:00

78 lines
1.3 KiB
Go

package chat
import (
"errors"
"time"
"github.com/owncast/owncast/models"
)
// Setup sets up the chat server.
func Setup(listener models.ChatListener) {
setupPersistence()
clients := make(map[string]*Client)
addCh := make(chan *Client)
delCh := make(chan *Client)
sendAllCh := make(chan models.ChatMessage)
pingCh := make(chan models.PingMessage)
doneCh := make(chan bool)
errCh := make(chan error)
_server = &server{
clients,
"/entry", //hardcoded due to the UI requiring this and it is not configurable
listener,
addCh,
delCh,
sendAllCh,
pingCh,
doneCh,
errCh,
}
}
// Start starts the chat server.
func Start() error {
if _server == nil {
return errors.New("chat server is nil")
}
ticker := time.NewTicker(30 * time.Second)
go func() {
for range ticker.C {
_server.ping()
}
}()
_server.Listen()
return errors.New("chat server failed to start")
}
// SendMessage sends a message to all.
func SendMessage(message models.ChatMessage) {
if _server == nil {
return
}
_server.SendToAll(message)
}
// GetMessages gets all of the messages.
func GetMessages() []models.ChatMessage {
if _server == nil {
return []models.ChatMessage{}
}
return getChatHistory()
}
func GetClient(clientID string) *Client {
for _, client := range _server.Clients {
if client.ClientID == clientID {
return client
}
}
return nil
}