fix-client
Version:
A minimalist FIX API client
62 lines (55 loc) • 2.07 kB
JavaScript
const { EventEmitter } = require('events')
const Messages = require('../constants/ConstantsMessage')
const Fields = require('../constants/ConstantsField')
const Field = require('../fields/Field')
class FIXParserClientBase extends EventEmitter {
constructor(eventEmitter, parser) {
super();
this.eventEmitter = eventEmitter;
this.fixParser = parser;
this.host = null;
this.port = null;
this.client = null;
this.socket = null;
this.sender = null;
this.target = null;
this.heartBeatInterval = null;
this.heartBeatIntervalId = null;
}
stopHeartbeat() {
clearInterval(this.heartBeatIntervalId);
}
startHeartbeat() {
this.stopHeartbeat();
const sendHeartbeat = () => {
const heartBeat = this.fixParser.createMessage(
new Field(Fields.MsgType, 0),
new Field(
Fields.MsgSeqNum,
this.fixParser.getNextTargetMsgSeqNum()
),
new Field(Fields.SenderCompID, this.sender),
new Field(Fields.SendingTime, this.fixParser.getTimestamp()),
new Field(Fields.TargetCompID, this.target)
);
this.send(heartBeat);
}
this.heartBeatIntervalId = setInterval(sendHeartbeat, this.heartBeatInterval);
}
processMessage(message) {
if (message.messageType === Messages.SequenceReset) {
const newSeqNo = (this.fixParser.getField(Fields.NewSeqNo) || {})
.value;
if (newSeqNo) {
console.log(
`[${Date.now()}] FIXClient new sequence number ${newSeqNo}`
);
this.fixParser.setNextTargetMsgSeqNum(newSeqNo);
}
}
// console.log(
// `[${Date.now()}] FIXClient received message ${message.description}`
// );
}
}
module.exports = FIXParserClientBase