github.com/isyscore/isc-gobase@v1.5.3-0.20231218061332-cbc7451899e9/websocket/emitter.go (about)

     1  package websocket
     2  
     3  const (
     4  	All       = ""
     5  	Broadcast = ";to;all;except;me;"
     6  )
     7  
     8  type Emitter interface {
     9  	EmitMessage([]byte) error
    10  	Emit(string, any) error
    11  }
    12  
    13  type emitter struct {
    14  	conn *connection
    15  	to   string
    16  }
    17  
    18  var _ Emitter = &emitter{}
    19  
    20  func newEmitter(c *connection, to string) *emitter {
    21  	return &emitter{conn: c, to: to}
    22  }
    23  
    24  func (e *emitter) EmitMessage(nativeMessage []byte) error {
    25  	e.conn.server.emitMessage(e.conn.id, e.to, nativeMessage)
    26  	return nil
    27  }
    28  
    29  func (e *emitter) Emit(event string, data any) error {
    30  	message, err := e.conn.server.messageSerializer.serialize(event, data)
    31  	if err != nil {
    32  		return err
    33  	}
    34  	_ = e.EmitMessage(message)
    35  	return nil
    36  }