UNPKG

fix-over-tcp

Version:

Custom TCP FIX protocol(beta

58 lines (48 loc) 1.97 kB
import { createServer } from 'net'; import FIXParserServerBase from './FIXParserServerBase'; import FrameDecoder from '../util/FrameDecoder'; import Message from '../message/Message'; import Header from '../Header'; export default class FIXParserServerSocketWithHeader extends FIXParserServerBase { createServer() { this.server = createServer((socket) => { this.socket = socket; this.socket.pipe(new FrameDecoder()).on('data', (data) => { const header = data.slice(0, Header.length); const body = data.slice(Header.length); const message = this.fixParser.parse(body.toString())[0]; this.processMessage(header, message); this.eventEmitter.emit('message', message); }); this.socket.on('open', () => { this.eventEmitter.emit('open'); }); this.socket.on('close', () => { this.eventEmitter.emit('close'); }); }); this.server.listen(this.port, this.host); } send(message) { if (this.socket.readyState === 'open') { if (message instanceof Message) { this.fixParser.setNextTargetMsgSeqNum( this.fixParser.getNextTargetMsgSeqNum() + 1 ); this.socket.write(message.encode()); } else { console.error( `[${Date.now()}] FIXParserServerSocketWithHeader: could not send message: message of wrong type` ); } } else { console.error( `[${Date.now()}] FIXParserServerSocketWithHeader: could not send message, socket not open` ); } } processMessage(header, message){ super.processMessage(message); console.log(`[${new Date().format("yyyyMMdd-hh:mm:ss.ff")}] handle header here :: ${header}`); } }