// Copyright (c) Mainflux // SPDX-License-Identifier: Apache-2.0 package ws import ( "github.com/gorilla/websocket" "github.com/mainflux/mainflux/pkg/messaging" ) // Client handles messaging and websocket connection. type Client struct { conn *websocket.Conn id string } // NewClient returns a new websocket client. func NewClient(c *websocket.Conn) *Client { return &Client{ conn: c, id: "", } } // Cancel handles the websocket connection after unsubscribing. func (c *Client) Cancel() error { if c.conn == nil { return nil } return c.conn.Close() } // Handle handles the sending and receiving of messages via the broker. func (c *Client) Handle(msg *messaging.Message) error { // To prevent publisher from receiving its own published message if msg.GetPublisher() == c.id { return nil } return c.conn.WriteMessage(websocket.TextMessage, msg.Payload) }