feat: 增加broker并增加相关接口

pull/70/head
moonrailgun 2 years ago
parent 2c1aa02428
commit 7cdb5220c5

@ -926,6 +926,7 @@ importers:
react-admin: ^4.6.3
react-dom: ^18.2.0
react-router-dom: ^6.5.0
tailchat-server-sdk: workspace:^0.0.14
ts-node: ^10.9.1
typescript: ^4.8.4
dependencies:
@ -951,6 +952,7 @@ importers:
react-admin: 4.6.3_ib3m5ricvtkl2cll7qpr2f6lvq
react-dom: 18.2.0_react@18.2.0
react-router-dom: 6.5.0_biqbaboplfbrettd7655fr4n2y
tailchat-server-sdk: link:../packages/sdk
ts-node: 10.9.1_typescript@4.9.4
devDependencies:
'@remix-run/dev': 1.9.0_biqbaboplfbrettd7655fr4n2y

@ -56,7 +56,7 @@ const CardWithIcon = (props: Props) => {
<Box textAlign="right">
<Typography color="textSecondary">{title}</Typography>
<Typography variant="h5" component="h2">
{subtitle || <LoadingIndicator />}
{subtitle ?? <LoadingIndicator />}
</Typography>
</Box>
</Box>

@ -3,7 +3,6 @@ import {
Datagrid,
DateField,
List,
NumberField,
ReferenceField,
TextField,
UrlField,

@ -0,0 +1,14 @@
import { TcBroker } from 'tailchat-server-sdk';
import brokerConfig from '../../../moleculer.config';
const transporter = process.env.TRANSPORTER;
export const broker = new TcBroker({
...brokerConfig,
metrics: false,
logger: false,
transporter,
});
broker.start().then(() => {
console.log('已链接上Tailchat网络, TRANSPORTER: ', transporter);
});

@ -5,7 +5,7 @@ import morgan from 'morgan';
import { createRequestHandler } from '@remix-run/express';
import mongoose from 'mongoose';
import bodyParser from 'body-parser';
import { router } from './api';
import { apiRouter } from './router/api';
// 链接数据库
mongoose.connect(process.env.MONGO_URL!, (error: any) => {
@ -37,7 +37,7 @@ app.use(express.static('public', { maxAge: '1h' }));
app.use(morgan('tiny'));
app.use('/admin/api', router);
app.use('/admin/api', apiRouter);
app.all(
'/admin/*',
@ -56,7 +56,7 @@ app.all(
})
);
const port = process.env.PORT || 3000;
const port = process.env.ADMIN_PORT || 3000;
app.listen(port, () => {
console.log(

@ -1,7 +1,8 @@
import { Router } from 'express';
import raExpressMongoose from 'express-mongoose-ra-json-server';
import jwt from 'jsonwebtoken';
import { adminAuth, auth, authSecret } from './middleware';
import { adminAuth, auth, authSecret } from '../middleware';
import { networkRouter } from './network';
const router = Router();
@ -20,7 +21,10 @@ router.post('/login', (req, res) => {
username,
platform: 'admin',
},
authSecret
authSecret,
{
expiresIn: '2h',
}
);
res.json({
@ -32,17 +36,19 @@ router.post('/login', (req, res) => {
}
});
router.use('/network', networkRouter);
router.use(
'/users',
auth(),
raExpressMongoose(require('../../../models/user/user').default, {
raExpressMongoose(require('../../../../models/user/user').default, {
q: ['nickname', 'email'],
})
);
router.use(
'/messages',
auth(),
raExpressMongoose(require('../../../models/chat/message').default, {
raExpressMongoose(require('../../../../models/chat/message').default, {
q: ['content'],
allowedRegexFields: ['content'],
})
@ -50,16 +56,16 @@ router.use(
router.use(
'/groups',
auth(),
raExpressMongoose(require('../../../models/group/group').default, {
raExpressMongoose(require('../../../../models/group/group').default, {
q: ['name'],
})
);
router.use(
'/file',
auth(),
raExpressMongoose(require('../../../models/file').default, {
raExpressMongoose(require('../../../../models/file').default, {
q: ['objectName'],
})
);
export { router };
export { router as apiRouter };

@ -0,0 +1,37 @@
/**
* Network
*/
import { Router } from 'express';
import { broker } from '../broker';
import { auth } from '../middleware';
import _ from 'lodash';
const router = Router();
router.get('/all', auth(), async (req, res) => {
res.json({
nodes: Array.from(new Map(broker.registry.nodes.nodes).values()).map(
(item) =>
_.pick(item, [
'id',
'available',
'local',
'ipList',
'hostname',
'cpu',
'client',
])
),
events: broker.registry.events.events.map((item) => item.name),
services: broker.registry.services.services.map((item) => item.name),
actions: Array.from(new Map(broker.registry.actions.actions).keys()),
});
});
router.get('/ping', auth(), async (req, res) => {
const pong = await broker.ping();
res.json(pong);
});
export { router as networkRouter };

@ -33,6 +33,7 @@
"react-admin": "^4.6.3",
"react-dom": "^18.2.0",
"react-router-dom": "^6.5.0",
"tailchat-server-sdk": "workspace:^0.0.14",
"ts-node": "^10.9.1"
},
"devDependencies": {

Loading…
Cancel
Save