Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ jobs:
db: [mongodb, redis]
include:
- db: mongodb
image: mvertes/alpine-mongo
image: mongo:7
options: >-
--health-cmd mongo
--health-cmd "mongosh --eval 'db.runCommand({ ping: 1 })'"
--health-interval 10s
--health-timeout 5s
--health-retries 10
Expand All @@ -44,9 +44,9 @@ jobs:
ports:
- ${{ matrix.port }}:${{ matrix.port }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v5
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/dockerbuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,20 @@ jobs:
build-push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6

- uses: docker/setup-buildx-action@v3
- uses: docker/setup-qemu-action@v3
- uses: docker/setup-buildx-action@v4
- uses: docker/setup-qemu-action@v4

- name: Login to dockerhub
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- id: docker_meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@v6
with:
images: moscajs/aedes
tags: |
Expand All @@ -46,7 +46,7 @@ jobs:

- name: build+push
timeout-minutes: 30
uses: docker/build-push-action@v5
uses: docker/build-push-action@v7
with:
platforms: linux/arm64,linux/amd64,linux/arm/v6,linux/arm/v7
context: .
Expand Down
7 changes: 0 additions & 7 deletions .taprc

This file was deleted.

20 changes: 20 additions & 0 deletions docker-compose-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
services:
mongodb:
image: mongo:7
ports:
- "27017:27017"
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.runCommand({ ping: 1 })"]
interval: 5s
timeout: 5s
retries: 10

redis:
image: redis:7
ports:
- "6379:6379"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 5
10 changes: 10 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
'use strict'

const neostandard = require('neostandard')

module.exports = [
...neostandard(),
{
ignores: ['node_modules/**']
}
]
22 changes: 9 additions & 13 deletions lib/cli.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
'use strict'

const pkg = require('../package')
const yargs = require('yargs')
const Yargs = require('yargs')
const path = require('path')
const Authorizer = require('./authorizer')
const { readFile, writeFile } = require('fs').promises
const aedes = require('aedes')
const { Aedes } = require('aedes')
const initPersistences = require('./persistence')
const initLogger = require('./logger')
const configDefaults = require('../config')
const { once } = require('events')
const stats = require('aedes-stats')

const WebSocket = require('ws')
Expand All @@ -19,6 +18,7 @@ const https = require('https')
const net = require('net')

// SETUP YARGS
const yargs = Yargs()
yargs
.version(pkg.version)
.alias('V', 'version')
Expand Down Expand Up @@ -217,11 +217,11 @@ async function createServer (protocol, host, port, options, handle) {

if (server) {
server._protocol = protocol
server.listen(port, host, (err) => {
if (err) reject(err)
else resolve(server)

server.on('error', reject)
server.listen(port, host, () => {
server.removeListener('error', reject)
Comment thread
robertsLando marked this conversation as resolved.
console.log('%s server listening on port %s:%d', protocol.toUpperCase(), host, port)
resolve(server)
})
}
})
Expand Down Expand Up @@ -319,11 +319,7 @@ async function start (program) {
aedesOpts.connectTimeout = config.connectTimeout
aedesOpts.id = config.brokerId

const broker = aedes(aedesOpts)

if (broker.persistence.waitForReady) {
await once(broker.persistence, 'ready')
}
const broker = await Aedes.createBroker(aedesOpts)

broker.on('subscribe', function (subscriptions, client) {
logger.info('Client \x1b[32m%s\x1b[0m SUBSCRIBED to: %s, broker %s', client ? client.id : client, subscriptions.map(s => s.topic).join('\n'), broker.id)
Expand Down Expand Up @@ -417,7 +413,7 @@ async function start (program) {
servers.push(await createServer(p, config.host, ports[p], serverOpts, broker.handle))
}

return { servers, broker, logger }
return { servers, broker, persistence, mq, logger }
}

/**
Expand Down
15 changes: 3 additions & 12 deletions lib/persistence.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,7 @@

const { once } = require('events')

const PERSISTENCES = {
redis: {
waitForReady: true
},
mongodb: {
waitForReady: true
}
}
const SUPPORTED = ['redis', 'mongodb']

module.exports = async function initPersistence (config) {
let persistence
Expand All @@ -18,20 +11,18 @@ module.exports = async function initPersistence (config) {
// start persistence
if (config.persistence) {
const name = config.persistence.name
if (!PERSISTENCES[name]) {
if (!SUPPORTED.includes(name)) {
throw Error('persistence ' + name + ' isn\'t supported')
} else {
persistence = require('aedes-persistence-' + name)(config.persistence.options || {})
// needs to be bound to broker in order to trigger ready event
persistence.waitForReady = PERSISTENCES[name].waitForReady
}
} else {
persistence = require('aedes-persistence')()
}

if (config.mq) {
const name = config.mq.name
if (!PERSISTENCES[name]) {
if (!SUPPORTED.includes(name)) {
throw Error('mqemitter ' + name + ' isn\'t supported')
} else {
mq = require('mqemitter-' + name)(config.mq.options || {})
Expand Down
Loading
Loading