Add topic publishing sidebar

This commit is contained in:
Thomas Nordquist
2019-01-11 00:40:05 +01:00
parent eb375073f9
commit c3ef9335c0
13 changed files with 292 additions and 15 deletions

View File

@@ -7,6 +7,7 @@ interface DataSource<DataSourceOptions> {
connect(options: DataSourceOptions): DataSourceStateMachine
disconnect(): void
onMessage(messageCallback: MessageCallback): void
publish(topic: string, payload: any): void
topicSeparator: string
stateMachine: DataSourceStateMachine
}

View File

@@ -69,6 +69,10 @@ export class MqttSource implements DataSource<MqttOptions> {
return this.stateMachine
}
public publish(topic: string, payload: any) {
this.client && this.client.publish(topic, payload)
}
public disconnect() {
this.client && this.client.end()
}

View File

@@ -1,7 +1,7 @@
import {
addMqttConnectionEvent, backendEvents,
makeConnectionStateEvent, removeConnection,
makeConnectionMessageEvent, AddMqttConnection,
makeConnectionMessageEvent, makePublishEvent, AddMqttConnection, Message,
} from '../../events'
import { MqttSource, DataSource } from './DataSource'
@@ -26,6 +26,9 @@ class ConnectionManager {
connection.connect(options)
this.handleNewMessagesForConnection(connectionId, connection)
backendEvents.subscribe(makePublishEvent(connectionId), (msg: Message) => {
this.connections[connectionId].publish(msg.topic, msg.payload)
})
}
private handleNewMessagesForConnection(connectionId: string, connection: MqttSource) {