Send message from service to other components (React Native)

Viewed 23

I'm thinking about the best way how to implement rabbitmq or mqtt sending messages from callback(queue.on) to chat component and last dialogs component, where I will update dialogs and chats. I heard about eventemitter, but I don't know best way,try to use eventemitter or make own handlers. I am very new in react.

MessageBrokerService:

import {Connection, Exchange, Queue} from "react-native-rabbitmq";
import uuid from 'react-native-uuid';
export default class RabbitMQService {
    startEventSubscribe = (exchange) => {
        exchangeName = exchange;
        connection.connect();
    }
}

const config = {
    host: '',
    port: 5671,
    username: '',
    password: '',
    virtualhost: '/',
    ttl: 10000,
    ssl: true,
};

let connection = new Connection(config);
let queue;
let exchangeName;

connection.on('connected', event => {
    queue = new Queue(
        connection,
        {
            name: uuid.v4(),
            durable: true,
        },
        {
            // queueDeclare args here like x-message-ttl
        },
    );

    let exchange = new Exchange(connection, {
        name: exchangeName,
    });

    queue.bind(exchange, '');

    // Receive messages
    queue.on('message', message => {
        console.log(message);

**I want from here send messages to chat component and last dialogs from here**
        queue.basicAck(message.delivery_tag);
    });

});

connection.on('error', event => {
    console.log('fail');
    console.log(event);
});

const publishMessage = message => {
    let routing_key = 'message-exchange';
    let properties = {
        //header authorization jwt
    };
    let exchangeSendMessages = new Exchange(connection, {
        name: 'message-exchange',
        type: 'direct',
        durable: true,
    });
    exchangeSendMessages.publish(message, routing_key, properties);
};

Last Dialogs screen:

const LastDialogsScreen = () => {

   **Want here to receive messages here from callback in MessageBrokerService**

    return ()
}

Chat screen:

const ChatScreen = () => {

   **Want here to receive messages in here too from callback in MessageBrokerService**

    return ()
}
0 Answers
Related