Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
Functions ¶
func EventDispatcher ¶
func EventDispatcher(handlers *EventHandlers, message *EventMessage)
EventDispatcher é o responsável por tratar as mensagens recebidas pelo websocket e direcionalas ao handler correto
Essa função poderia estar um um arquivo próprio dentro deste pacote, pois a mesma vai acabar ficando muito grande
Types ¶
type ClientGroup ¶
type ClientGroup struct {
// O ID do grupo serve para identifica-lo em meio a outros grupos
ID string
// Lista com todas as sessões de clientes conectados nesse grupo
ClientSessions []*ClientSession
}
ClientGroup é responsável por manter as informações dos usuários do mesmo grupo para que possam fazer broadcast das mensagens
func NewClientGroup ¶
func NewClientGroup(groupID string) *ClientGroup
NewClientGroup retorna um novo grupo sem sessões
func (*ClientGroup) AddClientSession ¶
func (cg *ClientGroup) AddClientSession(clientSession *ClientSession)
AddClientSession coloca uma sessão nova dentro do grupo
type ClientSession ¶
type ClientSession struct {
// ID serve para diferencia-lo dos outros dãã...
ID string
// Esse é o grupo que esse client está inserido
Group string
// WebsocketConnection carrega a conexão WS do cliente para que ele possa continuar se comunicando
WebsocketConnection *websocket.Conn
// SendResponse envia para o usuário as respostas das chamadas
SendResponse chan []byte
// FinishClientSession finaliza o hub de operação dele
FinishClientSession chan bool
// Este cara vai receber a solicitação e vai trata-la
EventsHub *EventHub
}
ClientSession é responsável por manter as informações do usuário que fez a solicitação
func NewClientSession ¶
func NewClientSession() *ClientSession
NewClientSession cria uum novo usuário
func (*ClientSession) ReadFromSocket ¶
func (cs *ClientSession) ReadFromSocket()
ReadFromSocket Pega as mensagens que vem do websocket
func (*ClientSession) SendBroadcast ¶
func (cs *ClientSession) SendBroadcast(message *EventMessage)
SendBroadcast envia uma mensagem no padrão EventMessage para todos os Clients do mesmo grupo
func (*ClientSession) SendMessage ¶
func (cs *ClientSession) SendMessage(message *EventMessage)
SendMessage envia uma mensagem no padrão EventMessage para o Client
func (*ClientSession) WriteToSocket ¶
func (cs *ClientSession) WriteToSocket()
WriteToSocket Envia a mensagem para o cliente
type EventHandlers ¶
type EventHandlers struct {
HandlerList map[string]func(*EventMessage)
}
EventHandlers carrega a lista com todas as possiveis chamadas e seus handlers
type EventHub ¶
type EventHub struct {
// Este é o canal que vai distribuir as mensagens
Messaging chan *EventMessage
// Este canal finaliza o hub
Finish chan bool
// Essa é a lista com todos os Handlers
Handlers *EventHandlers
// Armazena todos os grupos de mensagem
ClientGroups map[string]*ClientGroup
}
EventHub é o centralizador das mensagens, ele é responsável por pegar as mensagens e as enviar para as rotas
func NewEventHub ¶
func NewEventHub() *EventHub
NewEventHub cria o novo EventHub com o channel já iniciado
func (*EventHub) AddGroup ¶
func (eh *EventHub) AddGroup(clientGroup *ClientGroup)
AddGroup update group list with one new group
func (*EventHub) AddHandler ¶
func (eh *EventHub) AddHandler(event string, f func(*EventMessage))
AddHandler adiciona um novo handler para as chamadas
type EventMessage ¶
type EventMessage struct {
// Event é o tipo de evento que está relacionado a essa chamada
Event string `json:"event"`
// Data é a informação que a mensagem está transportando
Data interface{} `json:"data"`
// Client é o usuário que fez a solicitação
Client *ClientSession `json:"-"`
}
EventMessage é o modelo de mensagens que serão compartilhados no webscoket