Я новичок в реагировании / избыточности, но я пытаюсь использовать его для создания внешнего интерфейса, который будет взаимодействовать с внутренним интерфейсом через RabbitMQ. У меня есть файл websockets.js, в котором я устанавливаю свой клиент websocket и STOMP:
import * as Stomp from 'stompjs';
var msgpack = require("msgpack-lite");
var onConn = () => {
console.log('Successfully Connected');
stompClient.subscribe('/queue/frontend-response', onMessage);
//var params = { "params": "{}" };
//var obj = JSON.stringify(msgpack.encode(params));
//stompClient.send(
// '/exchange/product/product.request.find',
// {'reply-to': 'frontend', 'correlation-id': 999},
// obj);
};
var onErr = (e) => {
console.log('***************** Error: ' + e);
};
function onMessage(msg) {
console.log(msg);
}
var wss = new WebSocket("MY AMQP INSTANBCE");
var stompClient = Stomp.over(wss);
stompClient.connect(uname, pword, onConn, onErr, uname);
export default { stompClient };
Если я раскомментирую код в onConn
, данные будут отправлены, а ответ получен правильно. Однако я бы хотел, чтобы этот сокет был импортирован любым компонентом, который должен взаимодействовать с серверной частью. У меня есть это в моем actions/index.js
файле:
// src/js/actions/index.js
import stompClient from './websocket.js';
import { SET_PRODUCTS } from "../constants/action-types";
var msgpack = require("msgpack-lite");
export function setProducts(payload) {
var params = { "params": "{}" };
var obj = JSON.stringify(msgpack.encode(params));
stompClient.send(
'/exchange/product/product.request.find',
{'reply-to': 'frontend', 'correlation-id': 999},
obj);
return { type: SET_PRODUCTS, payload }
};
В настоящее время этот код выполняется при нажатии кнопки в пользовательском интерфейсе. Обратите внимание, что код в setProducts
идентичен коду, который работает в websockets.js
. Но здесь я не получаю никаких данных, я получаю ошибку, упомянутую в заголовке.
Может кто-нибудь объяснить, что здесь происходит, и предложить способ, которым я могу сделать эту работу вне моего websockets.js
файла?