An admin panel of Bull based on WebSocket.
npm install bull-admin-panel
const express = require('express');
const http = require('http');
const Bull = require('bull');
const BullAdminPanel = require('bull-admin-panel');
const app = express();
const server = http.createServer(app);
const queue = new Bull('queue-name', {
redis: {
host: 'localhost',
port: 6379,
db: 1
}
});
app.use('/bull', new BullAdminPanel({
basePath: '/bull',
verifyClient: (info, callback) => {
// Do authorization for WebSocket.
// https://github.com/websockets/ws/blob/master/doc/ws.md#new-websocketserveroptions-callback
callback(true);
},
queues: [queue],
server: server
}));
// Launch server
server.listen(8000, 'localhost', () => {
const {address, port} = server.address();
console.log(`Server listening at http://${address}:${port}`);
});
bull-admin-panel use WebSocket. You need config upgrade request.
NGINX as a WebSocket Proxy
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
}
Type: string
Required: required
The bull admin panel base path. We pass to frontend app.
Type: string
Required: optional
The default value is copy from basePath
. The websocket just accepts to connect via this path.
If your site has rewrite path settings. You can use this option.
Type: function(info: object, callback: function)
Required: required
For websocket authorization.
More information:
Type: Array<Bull>
Required: required
Bull instances.
const Bull = require('bull');
const queues = [
new Bull('queue-a', 'redis://localhost:6379/0'),
new Bull('queue-b', 'redis://localhost:6379/0')
];
Type: http.Server
Required: required
The node.js http.Server instance.
Fork this repository then clone it.
-
Install node modules.
npm install
-
Start the develop server.
npm start