0.7.2 • Published 7 years ago
mono-push v0.7.2
Push module for Mono
Installation
npm install --save mono-pushThen, in your configuration file of your Mono application (example: conf/application.js):
module.exports = {
mono: {
modules: [
'mono-mongodb',
'mono-push'
]
}
}mono-push requires mono-mongodb, so it must be installed and declared before mono-push because modules are loaded synchronously
Configuration
mono-push will use the push property of your configuration:
io: Activate push event via socket.io- Type:
boolean - Default:
false - Requires: mono-io
- Type:
collectionName: Collection name in MongoDB- Type:
string - Default:
'mono-pushes'
- Type:
Example of activating socket.io and writing events in pushes collection (conf/application.js):
module.exports = {
mono: {
modules: [
'mono-mongodb', // Required by mono-push
'mono-io', // Required by mono-push when io is true
'mono-push'
],
push: {
io: true,
collectionName: 'pushes'
}
}
}Usage
In your files, you can access the push and pushAll methods like this:
Push an event to authenticated user(s) matching a query
push(event: string, query: object = {}, payload: object = {})
Push an event to all connected sockets
pushAll(event: string, payload: object = {})
Example
const { push, pushAll } = require('mono-push')
await push('notification', { userId: '...' }, { type: 'email' })
// userId will be matched against authenticated users
await pushAll('message', { message: 'Welcome!' })
// Send it to all connected devicesWith conf io: true, mono-push will emit an event to every socket connected that matches the query.
On client-side, the user must connect with the socket.io-client:
import io from 'socket.io-client'
const socket = io('http://localhost:8000/push')
const token = '...' // JWT generate by await jwt.generateJWT(session), see Mono
socket.on('connect', () => {
socket
.emit('authenticate', { token })
.on('authenticated', function () {
console.log('Authenticated')
})
.on('unauthorized', function (msg) {
console.log('Unauthorized')
})
// Listen on push events
socket.on('my-event', (event) {
// event is { message: 'Welcome!' }
})
})