w-comor-mqtt
Version:
A websocket communicator in nodejs and browser. Mapping functions from nodejs to other end points, like a simple RPC.
77 lines (71 loc) • 2.48 kB
JavaScript
import WComorMqttServer from './src/WComorMqttServer.mjs'
//import WComorMqttServer from './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) {
//使用token驗證使用者身份
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(true)
}, 1000)
})
},
filterFuncs: function(token, funcs) {
//使用token驗證使用者身份與過濾可用funcs
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)
opt.port = 8081
opt.portWeb = 8091
new WComorMqttServer(opt)
//node --experimental-modules --es-module-specifier-resolution=node srv.mjs