Корда как транспортный слой: чтение данных - PullRequest
0 голосов
/ 28 марта 2019

Учитывая сложившуюся сеть узлов Corda, я хотел бы обмениваться информацией между сторонами, не затрагивая Хранилище.

Моя архитектура выглядит примерно так:
ClientA <-RPC-> NodeA+CorDapp <-Public-> NodeB+CorDapp <-RPC-> ClientB

Хотя отправка данных очень проста, я пытаюсь выяснить , как ClientB может уведомляться , когда что-то появляется в NodeB?

1 Ответ

0 голосов
/ 29 марта 2019

Для этого вы можете использовать Flow Framework.

Итак, я предполагаю, что вы делаете что-то вроде инициации сеанса потока из NodeA с NodeB, а затем выполняете Send для отправки некоторых данных?

val flowSession = initiateFlow(NodeB)
flowSession.send(someData)

На NodeB отвечающий поток получит эти данные, и вы можете использовать все что угодно в области Java для уведомления ClientB. Если вы хотите уведомить Клиента, вызвав RPC, вы можете сделать это.

@InitiatedBy(Initiator::class)
class Responder(val counterpartySession: FlowSession) : FlowLogic<Unit>() {
    @Suspendable
    override fun call() {
        val yourData = counterpartySession.receive<String>().unwrap { it }

        //Some code to alert Client B
    }
}
...