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