diff --git a/broker/broker.go b/broker/broker.go index 2207ad2..9c888fc 100644 --- a/broker/broker.go +++ b/broker/broker.go @@ -642,6 +642,18 @@ func (b *Broker) PublishMessage(packet *packets.PublishPacket) { } } +func (b *Broker) PublishMessageByClientId(packet *packets.PublishPacket, clientId string) error { + cli, loaded := b.clients.LoadAndDelete(clientId) + if !loaded { + return fmt.Errorf("clientId %s not connected", clientId) + } + conn, success := cli.(*client) + if !success { + return fmt.Errorf("clientId %s loaded fail", clientId) + } + return conn.WriterPacket(packet) +} + func (b *Broker) BroadcastUnSubscribe(topicsToUnSubscribeFrom []string) { if len(topicsToUnSubscribeFrom) == 0 { return diff --git a/broker/client.go b/broker/client.go index 69dccfa..e185ae5 100644 --- a/broker/client.go +++ b/broker/client.go @@ -248,7 +248,7 @@ func validatePacketFields(msgPacket packets.ControlPacket) (validFields bool) { } } - // All fields has been validated successfully + // All fields have been validated successfully validFields = true return