首次提交
This commit is contained in:
+77
@@ -0,0 +1,77 @@
|
||||
'use strict'
|
||||
|
||||
const handleConnect = require('./connect')
|
||||
const handleSubscribe = require('./subscribe')
|
||||
const handleUnsubscribe = require('./unsubscribe')
|
||||
const handlePublish = require('./publish')
|
||||
const handlePuback = require('./puback')
|
||||
const handlePubrel = require('./pubrel')
|
||||
const handlePubrec = require('./pubrec')
|
||||
const handlePing = require('./ping')
|
||||
|
||||
function handle (client, packet, done) {
|
||||
if (packet.cmd === 'connect') {
|
||||
if (client.connecting || client.connected) {
|
||||
// [MQTT-3.1.0-2]
|
||||
finish(client.conn, packet, done)
|
||||
return
|
||||
}
|
||||
handleConnect(client, packet, done)
|
||||
return
|
||||
}
|
||||
|
||||
if (!client.connecting && !client.connected) {
|
||||
// [MQTT-3.1.0-1]
|
||||
finish(client.conn, packet, done)
|
||||
return
|
||||
}
|
||||
|
||||
switch (packet.cmd) {
|
||||
case 'publish':
|
||||
handlePublish(client, packet, done)
|
||||
break
|
||||
case 'subscribe':
|
||||
handleSubscribe(client, packet, false, done)
|
||||
break
|
||||
case 'unsubscribe':
|
||||
handleUnsubscribe(client, packet, done)
|
||||
break
|
||||
case 'pubcomp':
|
||||
case 'puback':
|
||||
handlePuback(client, packet, done)
|
||||
break
|
||||
case 'pubrel':
|
||||
handlePubrel(client, packet, done)
|
||||
break
|
||||
case 'pubrec':
|
||||
handlePubrec(client, packet, done)
|
||||
break
|
||||
case 'pingreq':
|
||||
handlePing(client, packet, done)
|
||||
break
|
||||
case 'disconnect':
|
||||
// [MQTT-3.14.4-3]
|
||||
client._disconnected = true
|
||||
// [MQTT-3.14.4-1] [MQTT-3.14.4-2]
|
||||
client.conn.destroy()
|
||||
done()
|
||||
return
|
||||
default:
|
||||
client.conn.destroy()
|
||||
done()
|
||||
return
|
||||
}
|
||||
|
||||
if (client._keepaliveInterval > 0) {
|
||||
client._keepaliveTimer.reschedule(client._keepaliveInterval)
|
||||
}
|
||||
}
|
||||
|
||||
function finish (conn, packet, done) {
|
||||
conn.destroy()
|
||||
const error = new Error('Invalid protocol')
|
||||
error.info = packet
|
||||
done(error)
|
||||
}
|
||||
|
||||
module.exports = handle
|
||||
Reference in New Issue
Block a user