w-comor-mqtt v1.0.36
w-comor-mqtt
A websocket communicator in nodejs and browser. Mapping functions from nodejs to other end points, like a simple RPC.
Documentation
To view documentation or get support, visit docs.
Parts
w-comor-mqtt
includes 2 parts:
w-comor-mqtt-server
: for nodejs serverw-comor-mqtt-client
: for nodejs and browser client
Installation
Using npm(ES6 module):
Note:
w-comor-mqtt-server
is mainly dependent onnet
,aedes-server-factory
andaedes
.Note:
w-comor-mqtt-client
is mainly dependent onmqtt
.
npm i w-comor-mqtt
Example for w-comor-mqtt-server
:
Link: [dev source code]
import WComorMqttServer from 'w-comor-mqtt/dist/w-comor-mqtt-server.umd.js'
function random(min, max) { return Math.floor(Math.random() * max) + min }
let opt = {
port: 8080, //for mqtt nodejs server
portWeb: 8090, //for mqtt web server
authenticate: function(token) {
//authenticate user by token
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(true)
}, 1000)
})
},
filterFuncs: function(token, funcs) {
//resolve funcs by authenticating user
return new Promise(function(resolve, reject) {
funcs = funcs.filter(function(v) {
return v.indexOf('Hide') < 0
})
resolve(funcs)
})
},
onClientChange: function(clients, opt) {
console.log(Server[port:${opt.port}][port for web:${opt.portWeb}] now clients: ${clients.length}
)
},
funcs: {
'group.plus': function({ p1, p2 }) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(p1 * p2)
}, random(100, 3000))
})
},
'group.div': function({ p1, p2 }) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(p1 / p2)
}, random(100, 3000))
})
},
'add': function({ p1, p2 }) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(p1 + p2)
}, random(100, 3000))
})
},
'addHide': function({ p1, p2 }) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(p1 + p2)
}, random(100, 3000))
})
},
'minu': function({ p1, p2 }) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(p1 - p2)
}, random(100, 3000))
})
},
},
}
new WComorMqttServer(opt)
#### Example for `w-comor-mqtt-client`:
> **Link:** [[dev source code](https://github.com/yuda-lyu/w-comor-mqtt/blob/master/scla.mjs)]
```alias
import WComorMqttClient from 'w-comor-mqtt/dist/w-comor-mqtt-client.umd.js'
//opt
let opt = {
url: 'mqtt://localhost:8080', //for mqtt nodejs server
token: '*',
open: function() {
console.log('client nodejs: open')
},
close: function() {
console.log('client nodejs: close')
},
error: function(err) {
console.log('client nodejs: error:', err)
},
reconn: function() {
console.log('client nodejs: reconn')
},
}
//WComorMqttClient
new WComorMqttClient(opt)
.then(function(wo) {
console.log('client nodejs: funcs: ', wo)
function core(ps) {
wo.group.plus(ps)
.then(function(r) {
console.log('client nodejs: plus(' + JSON.stringify(ps) + ')=' + r)
})
.catch(function(err) {
console.log('client nodejs: plus: catch: ', err)
})
wo.group.div(ps)
.then(function(r) {
console.log('client nodejs: div(' + JSON.stringify(ps) + ')=' + r)
})
.catch(function(err) {
console.log('client nodejs: div: catch: ', err)
})
wo.add(ps)
.then(function(r) {
console.log('client nodejs: add(' + JSON.stringify(ps) + ')=' + r)
})
.catch(function(err) {
console.log('client nodejs: add: catch: ', err)
})
wo.minu(ps)
.then(function(r) {
console.log('client nodejs: minu(' + JSON.stringify(ps) + ')=' + r)
})
.catch(function(err) {
console.log('client nodejs: minu: catch: ', err)
})
}
let i = 100
setInterval(function() {
i += 1
core({
p1: i,
p2: 10,
})
}, 1000)
})
.catch(function(err) {
console.log('client nodejs: catch', err)
})
In a browser(UMD module):
Note:
w-comor-mqtt-client
is mainly dependent onmqtt
.
Optional Add script with nomodule for IE11.
<script nomodule src="https://cdn.jsdelivr.net/npm/@babel/polyfill/dist/polyfill.min.js"></script>
Necessary Add script for mqtt.
<script src="https://cdn.jsdelivr.net/npm/mqtt@3.0.0/dist/mqtt.min.js"></script>
Necessary Add script for w-comor-mqtt-client.
<script src="https://cdn.jsdelivr.net/npm/w-comor-mqtt@1.0.36/dist/w-comor-mqtt-client.umd.js"></script>
Example for w-comor-mqtt-client
:
Link: [dev source code]
//opt let opt = { url: 'mqtt://localhost:8090', //for mqtt web server token: '*', open: function() { console.log('client web: open') }, close: function() { console.log('client web: close') }, error: function(err) { console.log('client web: error:', err) }, reconn: function() { console.log('client web: reconn') }, }
//WComorMqttClient let WComorMqttClient = window'w-comor-mqtt-client' new WComorMqttClient(opt) .then(function(wo) { console.log('client web: funcs: ', wo)
function core(ps) {
wo.group.plus(ps)
.then(function(r) {
console.log('client web: plus(' + JSON.stringify(ps) + ')=' + r)
})
.catch(function(err) {
console.log('client web: plus: catch: ', err)
})
wo.group.div(ps)
.then(function(r) {
console.log('client web: div(' + JSON.stringify(ps) + ')=' + r)
})
.catch(function(err) {
console.log('client web: div: catch: ', err)
})
wo.add(ps)
.then(function(r) {
console.log('client web: add('+JSON.stringify(ps)+')='+r)
})
.catch(function(err) {
console.log('client web: add: catch: ', err)
})
wo.minu(ps)
.then(function(r) {
console.log('client web: minu('+JSON.stringify(ps)+')='+r)
})
.catch(function(err) {
console.log('client web: minu: catch: ', err)
})
}
let i = 100
setInterval(function() {
i += 1
core({
p1: i,
p2: 10,
})
}, 1000)
})
.catch(function(err) {
console.log('client web: catch', err)
})
1 year ago
1 year ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago