jsmodbus
Version:
Implementation for the Serial/TCP Modbus protocol.
49 lines (37 loc) • 1.16 kB
JavaScript
'use strict'
const debug = require('debug')('modbus tcp client socket')
const RequestHandler = require('./modbus-server-request-handler.js')
const ResponseHandler = require('./modbus-server-response-handler.js')
class ModbusServerClient {
constructor (server, socket, Request, Response) {
this._server = server
this._socket = socket
this._requestHandler = new RequestHandler(Request)
this._responseHandler = new ResponseHandler(this._server, Response)
this._socket.on('data', this._onData.bind(this))
}
get socket () {
return this._socket
}
get server () {
return this._server
}
_onData (data) {
debug('new data coming in')
this._requestHandler.handle(data)
do {
const request = this._requestHandler.shift()
if (!request) {
debug('no request to process')
/* TODO: close client connection */
break
}
this._responseHandler.handle(request, function (response) {
this._socket.write(response, function () {
debug('response flushed', response)
})
}.bind(this))
} while (1)
}
}
module.exports = ModbusServerClient