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 }