{"_id":"node-quickfix-ssl","_rev":"3-c4cc3180a3a7a394392d1e7d9dc611ea","name":"node-quickfix-ssl","description":"This is a wrapper for the Quickfix C++ library to be used within node.js applications","dist-tags":{"latest":"2.0.11"},"versions":{"2.0.10":{"name":"node-quickfix-ssl","version":"2.0.10","scripts":{"preinstall":"npm install nan && node-gyp clean && node-gyp configure && node-gyp build","preuninstall":"rm -rf build/*","test":"mocha"},"main":"index.js","description":"This is a wrapper for the Quickfix C++ library to be used within node.js applications","author":{"name":"Kermen Deol","email":"kermen.deol@electronifie.com"},"dependencies":{"nan":"2.4.0"},"devDependencies":{"dateformat":"^1.0.8","mocha":"^2.2.5","mocha-jenkins-reporter":"^0.1.9","segfault-handler":"^1.0.0","should":"^6.0.3"},"repository":{"type":"git","url":"git+https://github.com/electronifie/node-quickfix.git"},"gitHead":"5bfce25848642de556fd382c98dec811f0c3680f","bugs":{"url":"https://github.com/electronifie/node-quickfix/issues"},"homepage":"https://github.com/electronifie/node-quickfix#readme","_id":"node-quickfix-ssl@2.0.10","_shasum":"5abd9d7adbbd6d49aa813590a1902b365bfafb6c","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.5.0","_npmUser":{"name":"xmurobi","email":"xmurobi@gmail.com"},"dist":{"shasum":"5abd9d7adbbd6d49aa813590a1902b365bfafb6c","tarball":"https://registry.npmjs.org/node-quickfix-ssl/-/node-quickfix-ssl-2.0.10.tgz","integrity":"sha512-IZHnC+uJXB5G3PiZoBVCkghFHy3PpqZTdplKPJOfVHaudE9aRlmCG3lVLSxA9ByUGG+RafqjMZZ4BPgrBo0PpA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBMnuUXWtePGDgo3R+eD5YoVFI612i8CZRUoFkDviN8QIhAKccNfgNmAJ2jE7kAGum+H1s+KiwrDNr32z/sbj0Oyu0"}]},"maintainers":[{"name":"xmurobi","email":"xmurobi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/node-quickfix-ssl-2.0.10.tgz_1487400431506_0.8737342455424368"}},"2.0.11":{"name":"node-quickfix-ssl","version":"2.0.11","scripts":{"preinstall":"npm install nan && node-gyp clean && node-gyp configure && node-gyp build","preuninstall":"rm -rf build/*","test":"mocha"},"main":"index.js","description":"This is a wrapper for the Quickfix C++ library to be used within node.js applications","author":{"name":"Kermen Deol","email":"kermen.deol@electronifie.com"},"dependencies":{"nan":"2.4.0"},"devDependencies":{"dateformat":"^1.0.8","mocha":"^2.2.5","mocha-jenkins-reporter":"^0.1.9","segfault-handler":"^1.0.0","should":"^6.0.3"},"repository":{"type":"git","url":"git+https://github.com/electronifie/node-quickfix.git"},"gitHead":"f47251a0d50f709f7e4b39de158dcb0bd096ef4b","bugs":{"url":"https://github.com/electronifie/node-quickfix/issues"},"homepage":"https://github.com/electronifie/node-quickfix#readme","_id":"node-quickfix-ssl@2.0.11","_shasum":"0e0b088cdc92608184f8f8fda703c7b05e97ba3b","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.5.0","_npmUser":{"name":"xmurobi","email":"xmurobi@gmail.com"},"dist":{"shasum":"0e0b088cdc92608184f8f8fda703c7b05e97ba3b","tarball":"https://registry.npmjs.org/node-quickfix-ssl/-/node-quickfix-ssl-2.0.11.tgz","integrity":"sha512-kynViBl8BZKras0BsFE2WteXgNNpaWpWwwxEWoPfmUMbXN4+AOd+8upBpHJZUkdkwyZ5/ycMsuNM0F9ZAmCUIQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC9EwzMlDs0+D9mcKiOSONb7Fe6c0FfzZI6PxOlcYJKHAiBxnhT6Y1Lj8BUSNfWcIKgHCJbSZjiSH2H3ENiVvEgfyA=="}]},"maintainers":[{"name":"xmurobi","email":"xmurobi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/node-quickfix-ssl-2.0.11.tgz_1492658231865_0.6481595980003476"}}},"readme":"node-quickfix-ssl support SSL\n=============================\n\nThis is a node.js wrapper of the popular QuickFIX library support SSL. \nInformation about QuickFIX can be found at http://quickfixengine.org/. FIX is a standardized messaging protocol used for electronic communication of financial information. More information about FIX can be found at http://www.fixprotocol.org/\n\nNOTE: Use the QuickFIX fork which support SSL here: https://github.com/karopawil/quickfix.git\n\n###Installing######\n\n1. Download quickfix tar here: http://www.quickfixengine.org/\n2. Check required dependencies: http://www.quickfixengine.org/quickfix/doc/html/dependencies.html\n  - On Ubuntu 14.04 LTS (Trusty Tahr) [zlib1g-dev](http://packages.ubuntu.com/trusty/zlib1g-dev) is required.\n3. Install via the following instructions: http://www.quickfixengine.org/quickfix/doc/html/building.html\n4. After installing copy \"config.h\" from the install directory to your include directory (usually /usr/local/include/quickfix)\n5. Include this module in your package.json file.\n\n###Features######\n\nThis module currently supports creating an Acceptor, an Initiator, and retrieving individual Sessions.\nExamples can be found in the examples directory of this project.\n\n####Configuration######\n\nSessions can be configured through a properties file or directly with a String (which can be built from a JSON variable). For example, if your properties file has the following:\n```\n[DEFAULT]\nReconnectInterval=60\nSocketAcceptPort=3223\nPersistMessages=Y\nFileStorePath=./data\nFileLogPath=./log\nHttpAcceptPort=9011\n\n[SESSION]\nConnectionType=acceptor\nSenderCompID=ELECTRONIFIE\nTargetCompID=NODEQUICKFIX\nBeginString=FIX.4.4\nStartTime=00:00:00\nEndTime=23:59:59\nHeartBtInt=30\nUseDataDictionary=Y\nDataDictionary=./fix_spec/FIX44.xml\nRefreshOnLogon=Y\n\nSSLProtocol=all\n\n```\nYou can pass a String in to the options of your acceptor/initiator:\n```\nvar quickfix = require('node-quickfix');\n\nvar fixAcceptor = quickfix.acceptor({\n  settings: \"[DEFAULT]\\n\n  \tReconnectInterval=60\\n\n  \tRefreshOnLogon=Y\\n\n  \tSendRedundantResendRequests=Y\\n\n  \tPersistMessages=Y\\n\n  \tFileStorePath=./data/1\\n\n  \tFileLogPath=./log/1\\n\n  \tHttpAcceptPort=9011\\n\\n\n  \t[SESSION]\\n\n  \tConnectionType=acceptor\\n\n  \tSenderCompID=ELECTRONIFIE\\n\n  \tTargetCompID=NODEQUICKFIX\\n\n  \tBeginString=FIX.4.4\\n\n  \tStartTime=00:00:00\\n\n  \tEndTime=23:59:59\\n\n  \tHeartBtInt=30\\n\n  \tSocketAcceptPort=3223\\n\n  \tUseDataDictionary=Y\\n\n  \tDataDictionary=./fix_spec/FIX44.xml\",\n  logonProvider: logonProvider,\n  storeFactory: \"file\"\n});\n```\n\nnode-quickfix also has database support for quickfix. Provided you have the correct database installed, and have compiled quickfix with database support as described in http://www.quickfixengine.org/quickfix/doc/html/building.html , then using the database is as simple as updating your properties and then creating an acceptor with the correct storeFactory (file, postgresql, mysql, odbc). node-quickfix will use file storage by default.\n\n```\n[DEFAULT]\nReconnectInterval=60\nSocketAcceptPort=3223\nPersistMessages=Y\nPostgreSQLStoreDatabase=quickfix\nPostgreSQLStoreUser=postgres\nPostgreSQLStorePassword=postgres\nPostgreSQLStoreHost=localhost\nPostgreSQLStorePort=5432\nPostgreSQLStoreUseConnectionPool=Y\nPostgreSQLLogDatabase=quickfix\nPostgreSQLLogUser=postgres\nPostgreSQLLogPassword=postgres\nPostgreSQLLogHost=localhost\nPostgreSQLLogPort=5432\nPostgreSQLLogUseConnectionPool=Y\nHttpAcceptPort=9011\n```\n\n```\nvar fixAcceptor = quickfix.acceptor({\n  propertiesFile: './acceptor.properties',\n  logonProvider: logonProvider,\n  storeFactory: 'postgresql'\n});\n```\n\n####Logon Handling#######\n\nYou can create a custom logon handler in node-quickfix by creating a logon provider and then constructing your acceptor or initiator with it. You can also pass credentials to the constructor that will be used to populate field 553 and 554 of your logon messages.\n\n```\nvar quickfix = require('node-quickfix');\n\nvar logonProvider = quickfix.logonProvider(function(logonResponse, msg, sessionId) {\n\tif(msg.tags[553] == 'USERNAME' && msg.tags[554] == 'PASSWORD') {\n\t\tlogonResponse.done(true); //successful logon\n\t} else {\n\t\tlogonResponse.done(false); //reject logon\n\t}\n});\n\nvar fixAcceptor = quickfix.acceptor({\n  \"logonProvider\": logonProvider,\n  propertiesFile: \"./acceptor.properties\"\n});\n```\n\n```\nvar fixClient = quickfix.initiator({\n  credentials: {\n    username: \"USERNAME\",\n    password: \"PASSWORD\"\n  },\n  ssl: true,\n  propertiesFile: \"./initiator.properties\"\n});\n```\n\n####Message format######\n```\nmessage = {\n    header: {\n      8: 'FIX.4.4',\n      35: type,\n      49: senderId,\n      56: targetId\n    },\n    tags: {\n        tag1: value1,\n        tag2: value2\n    },\n    groups:[{\n        'index': field for NoOfEntries,\n        'delim': first tag in group,\n        'entries': [{tag1: value1, tag2: value2}, {tag1: value1, tag2: value2}]\n    }, ...]\n  }\n```\n\n####Acceptor API######\n`start(callback) //start acceptor`\n\n`send(msg, callback) //send json messages`\n\n`sendRaw(msg, callback) //send FIX message string`\n\n`stop(callback) //stop acceptor`\n\n`getSessions() //get configured sessions`\n\n`getSession(sessionId) //get session by session ID`\n\n\nAcceptors and initiators inherit from EventEmitter and so the following events can be listened for on acceptors/initiators with `fixAcceptor.on(eventName, callback);` Valid eventNames and the callback arguments are:\n```\nonCreate: sessionID\nonLogon: sessionID\nonLogout: sessionID\nonLogonAttempt:  message, sessionID\ntoAdmin: message, sessionID\nfromAdmin: message, sessionID\nfromApp:  message, sessionID\n```\n\n####Initiator API######\n`start(callback) //start acceptor`\n\n`send(msg, callback) //send json messages`\n\n`sendRaw(msg, callback) //send FIX message string`\n\n`stop(callback) //stop acceptor`\n\n`getSessions() //get configured sessions`\n\n`getSession(sessionId) //get session by session ID`\n\n`isLoggedOn() //is initiator is currently connected to a session`\n\n\n####Session API######\n`disconnect(callback) //disconnect a session`\n\n`getSessionID() //get session id for a session`\n\n`isEnabled() //is the session enabled`\n\n`isLoggedOn() //is the session currently logged on`\n\n`logon(callback) //log the session on`\n\n`logout(callback) //log the session out`\n\n`refresh(callback) //refresh session state from the message store`\n\n`reset(callback) //reset session sequence numbers`\n\ngetters/setters for session sequence numbers:\n\n```\ngetSenderSeqNum()\nsetSenderSeqNum(num)\ngetTargetSeqNum()\nsetSenderSeqNum(num)\n```\n\n","maintainers":[{"name":"xmurobi","email":"xmurobi@gmail.com"}],"time":{"modified":"2022-06-21T18:32:06.604Z","created":"2017-02-18T06:47:11.749Z","2.0.10":"2017-02-18T06:47:11.749Z","2.0.11":"2017-04-20T03:17:12.154Z"},"homepage":"https://github.com/electronifie/node-quickfix#readme","repository":{"type":"git","url":"git+https://github.com/electronifie/node-quickfix.git"},"author":{"name":"Kermen Deol","email":"kermen.deol@electronifie.com"},"bugs":{"url":"https://github.com/electronifie/node-quickfix/issues"},"readmeFilename":"README.md"}