Fullstack moleculer Proof-of-Concept project. Moleculer in browser and on server.
This is a Proof-of-Concept project where there is Moleculer in your browser and on the server.
Moleculer is a progressive microservices framework for Node.js.
Why not? There are some use-case where it can be useful because
It can be optimal for:
It's not optimal for:
Thanks for the geut/moleculer-browser library, Moleculer is able to run in browser. You can use almost every features from Moleculer except some server-side specific modules like File logger, Redis cacher, NATS transporter...etc.
I have created a Websocket server transporter and a Websocket client transporter. You should set the WebsocketServer transporter in the backend Moleculer node and set the WebsocketClient transporter in the browser Moleculer node using with the same port number.
It means you can connect to the backend Moleculer node from multiple browser nodes but you can't use multiple nodes on the backend.
const WebsocketServerTransporter = require("./WebsocketServerTransporter");
module.exports = {
nodeID: "backend",
transporter: new WebsocketServerTransporter({
port: 3300
}),
};
import { ServiceBroker } from "moleculer-browser";
import WebsocketClientTransporter from "./WebsocketClientTransporter";
const broker = new ServiceBroker({
nodeID: "frontend",
transporter: new WebsocketClientTransporter({
port: 3300
}),
/*
metrics: {
enabled: true,
reporter: "Console"
},*/
/*
tracing: {
enabled: true,
exporter: "Console"
}
*/
});
};
await this.broker.start();
import GreeterService from "./services/greeter.service.js"
broker.createService(GreeterService);
// Load all services from the services directory
const r = require.context("./services/", true, /\.service.js$/);
r.keys().forEach(fName => {
const svc = r(fName).default;
broker.createService(svc);
});
Clone the repo
git clone https://github.com/icebob/fullstack-moleculer.git
cd fullstack-moleculer
Install & start backend Moleculer node
cd backend
npm i
npm run dev
Install & start frontend Moleculer node
cd frontend
npm i
npm run dev
Open the http://localhost:8080 and try out.
Copyright (C) 2020 Icebob