šŸ•·ļø Crawler Inspector

URL Lookup

Direct Parameter Lookup

Raw Queries and Responses

1. Shard Calculation

Query:
Response:
Calculated Shard: 74 (from laksa064)

2. Crawled Status Check

Query:
Response:

3. Robots.txt Check

Query:
Response:

4. Spam/Ban Check

Query:
Response:

5. Seen Status Check

ā„¹ļø Skipped - page is already crawled

🚫
NOT INDEXABLE
āœ…
CRAWLED
7 months ago
šŸ¤–
ROBOTS ALLOWED

Page Info Filters

FilterStatusConditionDetails
HTTP statusPASSdownload_http_code = 200HTTP 200
Age cutoffFAILdownload_stamp > now() - 6 MONTH7.4 months ago
History dropPASSisNull(history_drop_reason)No drop reason
Spam/banPASSfh_dont_index != 1 AND ml_spam_score = 0ml_spam_score=0
CanonicalPASSmeta_canonical IS NULL OR = '' OR = src_unparsedNot set

Page Details

PropertyValue
URLhttps://www.npmjs.com/package/node-simconnect
Last Crawled2025-09-08 05:45:07 (7 months ago)
First Indexed2018-01-27 07:29:25 (8 years ago)
HTTP Status Code200
Meta Titlenode-simconnect - npm
Meta DescriptionA SimConnect client library for Node.JS.. Latest version: 4.0.0, last published: a year ago. Start using node-simconnect in your project by running `npm i node-simconnect`. There are 2 other projects in the npm registry using node-simconnect.
Meta Canonicalnull
Boilerpipe Text
A non-official SimConnect client library written in TypeScript. Lets you write Node.js applications that communicates directly with Microsoft Flight Simulator, FSX and Prepar3D without need for additional SDK files. Runs on Windows, Linux and Mac. This project is a port of the Java client library jsimconnect , originally written by lc0277 . Details about the protocol can be found on lc0277's old website . A huge thanks to everyone involved in that project! šŸ™ šŸ’” Tip: check out the msfs-simconnect-api-wrapper which provides a more user-friendly wrapper around some of the node-simconnect APIs. npm install node-simconnect Check out the /samples folder for example scripts. Refer to the official SimConnect documentation for comprehensive details on SimConnect APIs and usage. There are also auto generated API-docs . You always start by calling open(...) which will attempt to open a connection with the SimConnect server (your flight simulator). If this succeeds you will get access to: recvOpen : contains simulator information handle : used for accessing the SimConnect APIs Example: import { open , Protocol } from 'node-simconnect' ; const EVENT_ID_PAUSE = 1 ; open ( 'My SimConnect client' , Protocol . FSX_SP2 ) . then ( function ( { recvOpen , handle } ) { console . log ( 'Connected to' , recvOpen . applicationName ) ; handle . on ( 'event' , function ( recvEvent ) { switch ( recvEvent . clientEventId ) { case EVENT_ID_PAUSE : console . log ( recvEvent . data === 1 ? 'Sim paused' : 'Sim unpaused' ) ; break ; } } ) ; handle . on ( 'exception' , function ( recvException ) { console . log ( recvException ) ; } ) ; handle . on ( 'quit' , function ( ) { console . log ( 'Simulator quit' ) ; } ) ; handle . on ( 'close' , function ( ) { console . log ( 'Connection closed unexpectedly (simulator CTD?)' ) ; } ) ; handle . subscribeToSystemEvent ( EVENT_ID_PAUSE , 'Pause' ) ; } ) . catch ( function ( error ) { console . log ( 'Connection failed:' , error ) ; } ) ; node-simconnect vs the official API Most of the APIs described in the official SimConnect documentation are implemented in node-simconnect . For information on how each feature works, please refer to the official documentation. Several new features have been added to the SimConnect API after the new Microsoft Flight Simulator was released, and more features are likely to come. Most of these will only be implemented on request. If you are missing any features in node-simconnect feel free to open a new issue or create a pull request. Prepar3D support and Prepar3D-only-features will not be prioritized. For a complete list of available API methods, please refer to the SimConnectConnection class. A major feature used by C/C++/C# implementation of SimConnect client libraries is the ability to directly cast a memory block to a user-defined structure. This is technically impossible to do in JavaScript or TypeScript since memory layout of classes and types are not accessible. Consequently, the wrapping/unwrapping steps must be done by the user. Example using the official SimConnect SDK (C++): // C++ code //////////////////// struct Struct1 { double kohlsmann; double altitude; double latitude; double longitude; int verticalSpeed; }; // .... hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, " Kohlsman setting hg " , " inHg " ); hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, " Indicated Altitude " , " feet " ); hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, " Plane Latitude " , " degrees " ); hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, " Plane Longitude " , " degrees " ); hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, " VERTICAL SPEED " , " Feet per second " , SimConnectDataType.INT32); SimConnect_RequestDataOnSimObject (hSimConnect, REQUEST_1, DEFINITION_1, SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD_SECOND); // .... void CALLBACK MyDispatchProc (SIMCONNECT_RECV* pData, DWORD cbData) { switch (pData-> dwID ) { case SIMCONNECT_RECV_ID_SIMOBJECT_DATA: { SIMCONNECT_RECV_SIMOBJECT_DATA *pObjData = (SIMCONNECT_RECV_SIMOBJECT_DATA*) pData; switch (pObjData-> dwRequestID ) { case REQUEST_1: Struct1 *pS = (Struct1*)&pObjData-> dwData ; break ; } break ; } } } The code below demonstrates how the same is achieved with node-simconnect : // TypeScript code //////////////////// const REQUEST_1 = 0 ; const DEFINITION_1 = 0 ; // .... handle . addToDataDefinition ( DEFINITION_1 , 'Kohlsman setting hg' , 'inHg' , SimConnectDataType . FLOAT64 ) ; handle . addToDataDefinition ( DEFINITION_1 , 'Indicated Altitude' , 'feet' , SimConnectDataType . FLOAT64 ) ; handle . addToDataDefinition ( DEFINITION_1 , 'Plane Latitude' , 'degrees' , SimConnectDataType . FLOAT64 ) ; handle . addToDataDefinition ( DEFINITION_1 , 'Plane Longitude' , 'degrees' , SimConnectDataType . FLOAT64 ) ; handle . addToDataDefinition ( DEFINITION_1 , 'VERTICAL SPEED' , 'Feet per second' , SimConnectDataType . INT32 ) ; handle . requestDataOnSimObject ( REQUEST_1 , DEFINITION_1 , SimConnectConstants . OBJECT_ID_USER , SimConnectPeriod . SIM_FRAME ) ; // .... handle . on ( 'simObjectData' , recvSimObjectData => { switch ( recvSimObjectData . requestID ) { case REQUEST_1 : { const receivedData = { // Read order is important! kohlsmann : recvSimObjectData . data . readFloat64 ( ) , altitude : recvSimObjectData . data . readFloat64 ( ) , latitude : recvSimObjectData . data . readFloat64 ( ) , longitude : recvSimObjectData . data . readFloat64 ( ) , verticalSpeed : recvSimObjectData . data . readInt32 ( ) , } break ; } } } ) ; When the simObjectData callback is triggered, the recvSimObjectData.data is used to extract the requested simulation variables. These values are stored as a single continuous binary data chunk/buffer, maintaining the order in which the simulation variables were added to the data definition. In this case, the buffer is 288 bits long (64 + 64 + 64 + 64 + 32), or 36 bytes. The read...() functions are used to extract each value individually. When the correct function is used, the reading "cursor" (offset) automatically moves after each read, positioning it at the beginning of the next value in the buffer. Consequently, it is crucial to ensure that the values are read in the same order and using the same data type as initially requested. If the Node.js application runs on the same computer as the flight simulator you don't need to worry about this part. To connect from an external computer you must configure SimConnect to accept connections from other hosts. This procedure is also described in the official docs, but here is the short version: Open SimConnect.xml . FSX: X:\Users\<USER>\AppData\Roaming\Microsoft\FSX MSFS: X:\Users\<USER>\AppData\Local\Packages\Microsoft.FlightSimulator_**********\LocalCache . Set property <Address>0.0.0.0</Address> . Example of a working SimConnect.xml file: <? xml version = " 1.0 " encoding = " Windows-1252 " ?> < SimBase .Document Type = " SimConnect " version = " 1,0 " > < Filename >SimConnect.xml</ Filename > < SimConnect .Comm> < Protocol >IPv4</ Protocol > < Scope >local</ Scope > < Port >5111</ Port > < MaxClients >64</ MaxClients > < MaxRecvSize >41088</ MaxRecvSize > < Address >0.0.0.0</ Address > </ SimConnect .Comm> </ SimBase .Document> Connecting from a remote script can be done by providing the IP address of the flight simulator PC and the port number when calling open : const options = { remote : { host : 'localhost' , port : 5111 } } ; open ( 'My SimConnect client' , Protocol . FSX_SP2 , options ) . then ( /* ... */ ) . catch ( /* try again? */ ) ; Note that if no connection options are specified, node-simconnect will auto-discover connection details in the following order: Look for a SimConnect.cfg in the folder where Node.js is located. If the script is running in Electron, this will be the folder where the Electron executable is installed. Look for a SimConnect.cfg in the user's home directory ( %USERPROFILE% , eg. C:\Users\<username> ) Look for a named pipe in the Windows registry, automatically set by the simulator Look for a port number in the Windows registry, automatically set by the simulator. node-simconnect will then connect to localhost:<port> .
Markdown
skip to:[content](https://www.npmjs.com/package/node-simconnect#main)[package search](https://www.npmjs.com/package/node-simconnect#search)[sign in](https://www.npmjs.com/package/node-simconnect#signin) ā¤ - [Pro](https://www.npmjs.com/products/pro) - [Teams](https://www.npmjs.com/products/teams) - [Pricing](https://www.npmjs.com/products) - [Documentation](https://docs.npmjs.com/) npm [Sign Up](https://www.npmjs.com/signup)[Sign In](https://www.npmjs.com/login) ## node-simconnect![TypeScript icon, indicating that this package has built-in type declarations](https://static-production.npmjs.com/255a118f56f5346b97e56325a1217a16.svg) 4\.0.0 • Public • Published a year ago - [Readme](https://www.npmjs.com/package/node-simconnect?activeTab=readme) - [Code Beta](https://www.npmjs.com/package/node-simconnect?activeTab=code) - [5 Dependencies](https://www.npmjs.com/package/node-simconnect?activeTab=dependencies) - [2 Dependents](https://www.npmjs.com/package/node-simconnect?activeTab=dependents) - [58 Versions](https://www.npmjs.com/package/node-simconnect?activeTab=versions) # node-simconnect [![npm version](https://badge.fury.io/js/node-simconnect.svg)](https://badge.fury.io/js/node-simconnect) [![Strict TypeScript Checked](https://badgen.net/badge/TS/Strict)](https://www.typescriptlang.org/) A non-official SimConnect client library written in TypeScript. Lets you write Node.js applications that communicates directly with Microsoft Flight Simulator, FSX and Prepar3D without need for additional SDK files. Runs on Windows, Linux and Mac. This project is a port of the Java client library [jsimconnect](https://github.com/mharj/jsimconnect), originally written by [lc0277](https://www.fsdeveloper.com/forum/members/lc0277.1581). Details about the protocol can be found on [lc0277's old website](http://web.archive.org/web/20090620063532/http://lc0277.nerim.net/jsimconnect/doc/flightsim/simconnect/package-summary.html#package_description). A huge thanks to everyone involved in that project! šŸ™ ## Installation and use > šŸ’” Tip: check out the [msfs-simconnect-api-wrapper](https://www.npmjs.com/package/msfs-simconnect-api-wrapper) which provides a more user-friendly wrapper around some of the `node-simconnect` APIs. 1. `npm install node-simconnect` 2. Check out the [/samples](https://github.com/EvenAR/node-simconnect/tree/master/samples) folder for example scripts. 3. Refer to the [official SimConnect documentation](https://docs.flightsimulator.com/html/Programming_Tools/SimConnect/SimConnect_API_Reference.htm) for comprehensive details on SimConnect APIs and usage. There are also [auto generated API-docs](https://evenar.github.io/node-simconnect/). ### Getting started You always start by calling [`open(...)`](https://evenar.github.io/node-simconnect/functions/open.html) which will attempt to open a connection with the SimConnect server (your flight simulator). If this succeeds you will get access to: - [`recvOpen`](https://evenar.github.io/node-simconnect/classes/RecvOpen.html): contains simulator information - [`handle`](https://evenar.github.io/node-simconnect/classes/SimConnectConnection.html): used for accessing the SimConnect APIs Example: ``` import { open, Protocol } from 'node-simconnect'; const EVENT_ID_PAUSE = 1; open('My SimConnect client', Protocol.FSX_SP2) .then(function ({ recvOpen, handle }) { console.log('Connected to', recvOpen.applicationName); handle.on('event', function (recvEvent) { switch (recvEvent.clientEventId) { case EVENT_ID_PAUSE: console.log(recvEvent.data === 1 ? 'Sim paused' : 'Sim unpaused'); break; } }); handle.on('exception', function (recvException) { console.log(recvException); }); handle.on('quit', function () { console.log('Simulator quit'); }); handle.on('close', function () { console.log('Connection closed unexpectedly (simulator CTD?)'); }); handle.subscribeToSystemEvent(EVENT_ID_PAUSE, 'Pause'); }) .catch(function (error) { console.log('Connection failed:', error); }); ``` ## node-simconnect vs the official API ### Supported APIs Most of the APIs described in the [official SimConnect documentation](https://docs.flightsimulator.com/html/Programming_Tools/SimConnect/SimConnect_API_Reference.htm) are implemented in `node-simconnect`. For information on how each feature works, please refer to the official documentation. Several new features have been added to the SimConnect API after the new Microsoft Flight Simulator was released, and more features are likely to come. Most of these will only be implemented on request. If you are missing any features in `node-simconnect` feel free to [open a new issue](https://github.com/EvenAR/node-simconnect/issues) or create a pull request. Prepar3D support and Prepar3D-only-features will not be prioritized. For a complete list of available API methods, please refer to the [`SimConnectConnection`](https://evenar.github.io/node-simconnect/classes/SimConnectConnection.html) class. ### Data unwrapping A major feature used by C/C++/C\# implementation of SimConnect client libraries is the ability to directly cast a memory block to a user-defined structure. This is technically impossible to do in JavaScript or TypeScript since memory layout of classes and types are not accessible. Consequently, the wrapping/unwrapping steps must be done by the user. Example using the official SimConnect SDK (C++): ``` // C++ code //////////////////// struct Struct1 { double kohlsmann; double altitude; double latitude; double longitude; int verticalSpeed; }; // .... hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "Kohlsman setting hg", "inHg"); hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "Indicated Altitude", "feet"); hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "Plane Latitude", "degrees"); hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "Plane Longitude", "degrees"); hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "VERTICAL SPEED", "Feet per second", SimConnectDataType.INT32); SimConnect_RequestDataOnSimObject(hSimConnect, REQUEST_1, DEFINITION_1, SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD_SECOND); // .... void CALLBACK MyDispatchProc(SIMCONNECT_RECV* pData, DWORD cbData) { switch(pData->dwID) { case SIMCONNECT_RECV_ID_SIMOBJECT_DATA: { SIMCONNECT_RECV_SIMOBJECT_DATA *pObjData = (SIMCONNECT_RECV_SIMOBJECT_DATA*) pData; switch(pObjData->dwRequestID) { case REQUEST_1: Struct1 *pS = (Struct1*)&pObjData->dwData; break; } break; } } } ``` The code below demonstrates how the same is achieved with `node-simconnect`: ``` // TypeScript code //////////////////// const REQUEST_1 = 0; const DEFINITION_1 = 0; // .... handle.addToDataDefinition(DEFINITION_1, 'Kohlsman setting hg', 'inHg', SimConnectDataType.FLOAT64); handle.addToDataDefinition(DEFINITION_1, 'Indicated Altitude', 'feet', SimConnectDataType.FLOAT64); handle.addToDataDefinition(DEFINITION_1, 'Plane Latitude', 'degrees', SimConnectDataType.FLOAT64); handle.addToDataDefinition(DEFINITION_1, 'Plane Longitude', 'degrees', SimConnectDataType.FLOAT64); handle.addToDataDefinition(DEFINITION_1, 'VERTICAL SPEED', 'Feet per second', SimConnectDataType.INT32); handle.requestDataOnSimObject(REQUEST_1, DEFINITION_1, SimConnectConstants.OBJECT_ID_USER, SimConnectPeriod.SIM_FRAME); // .... handle.on('simObjectData', recvSimObjectData => { switch (recvSimObjectData.requestID) { case REQUEST_1: { const receivedData = { // Read order is important! kohlsmann: recvSimObjectData.data.readFloat64(), altitude: recvSimObjectData.data.readFloat64(), latitude: recvSimObjectData.data.readFloat64(), longitude: recvSimObjectData.data.readFloat64(), verticalSpeed: recvSimObjectData.data.readInt32(), } break; } } }); ``` When the `simObjectData` callback is triggered, the `recvSimObjectData.data` is used to extract the requested simulation variables. These values are stored as a single continuous binary data chunk/buffer, maintaining the order in which the simulation variables were added to the data definition. In this case, the buffer is 288 bits long (64 + 64 + 64 + 64 + 32), or 36 bytes. The `read...()` functions are used to extract each value individually. When the correct function is used, the reading "cursor" (offset) automatically moves after each read, positioning it at the beginning of the next value in the buffer. Consequently, it is crucial to ensure that the values are read in the same order and using the same data type as initially requested. ## Running over network? If the Node.js application runs on the same computer as the flight simulator you don't need to worry about this part. To connect from an external computer you must configure SimConnect to accept connections from other hosts. This procedure is also described in the official docs, but here is the short version: 1. Open `SimConnect.xml`. - FSX: `X:\Users\<USER>\AppData\Roaming\Microsoft\FSX` - MSFS: `X:\Users\<USER>\AppData\Local\Packages\Microsoft.FlightSimulator_**********\LocalCache`. 2. Set property `<Address>0.0.0.0</Address>`. Example of a working SimConnect.xml file: ``` <?xml version="1.0" encoding="Windows-1252"?> <SimBase.Document Type="SimConnect" version="1,0"> <Filename>SimConnect.xml</Filename> <SimConnect.Comm> <Protocol>IPv4</Protocol> <Scope>local</Scope> <Port>5111</Port> <MaxClients>64</MaxClients> <MaxRecvSize>41088</MaxRecvSize> <Address>0.0.0.0</Address> </SimConnect.Comm> </SimBase.Document> ``` Connecting from a remote script can be done by providing the IP address of the flight simulator PC and the port number when calling `open`: ``` const options = { remote: { host: 'localhost', port: 5111 } }; open('My SimConnect client', Protocol.FSX_SP2, options).then(/* ... */).catch(/* try again? */); ``` Note that if no connection options are specified, `node-simconnect` will auto-discover connection details in the following order: 1. Look for a [`SimConnect.cfg`](https://docs.flightsimulator.com/html/Programming_Tools/SimConnect/SimConnect_CFG_Definition.htm) in the folder where Node.js is located. If the script is running in Electron, this will be the folder where the Electron executable is installed. 2. Look for a [`SimConnect.cfg`](https://docs.flightsimulator.com/html/Programming_Tools/SimConnect/SimConnect_CFG_Definition.htm) in the user's home directory (`%USERPROFILE%`, eg. `C:\Users\<username>`) 3. Look for a named pipe in the Windows registry, automatically set by the simulator 4. Look for a port number in the Windows registry, automatically set by the simulator. node-simconnect will then connect to `localhost:<port>`. ## Readme ### Keywords - [FSX](https://www.npmjs.com/search?q=keywords:FSX) - [P3D](https://www.npmjs.com/search?q=keywords:P3D) - [SDK](https://www.npmjs.com/search?q=keywords:SDK) - [SimConnect](https://www.npmjs.com/search?q=keywords:SimConnect) - [Prepar3D](https://www.npmjs.com/search?q=keywords:Prepar3D) - [FlightSimulator](https://www.npmjs.com/search?q=keywords:FlightSimulator) - [Simulator](https://www.npmjs.com/search?q=keywords:Simulator) ## Package Sidebar ### Install `npm i node-simconnect` ### Repository [github.com/EvenAR/node-simconnect](https://github.com/EvenAR/node-simconnect) ### Homepage [github.com/EvenAR/node-simconnect\#readme](https://github.com/EvenAR/node-simconnect#readme) ### Weekly Downloads 60 ### Version 4\.0.0 ### License LGPL-3.0-or-later ### Unpacked Size 642 kB ### Total Files 278 ### Last publish a year ago ### Collaborators - [![evenar](https://www.npmjs.com/npm-avatar/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdmF0YXJVUkwiOiJodHRwczovL3MuZ3JhdmF0YXIuY29tL2F2YXRhci9hMzIzNWY3NDRhMTc2Mjg1OWIwNzY3NTM2Yjk0ZTIzYz9zaXplPTEwMCZkZWZhdWx0PXJldHJvIn0.Q59jEsEp6o2zSNZP1VpjLEW7A71g8K1ieOVyZMX3e0w)](https://www.npmjs.com/~evenar) [**Try** on RunKit](https://runkit.com/npm/node-simconnect) [**Report** malware](https://www.npmjs.com/support?inquire=security&security-inquire=malware&package=node-simconnect&version=4.0.0) ## Footer ### Support - [Help](https://docs.npmjs.com/) - [Advisories](https://github.com/advisories) - [Status](http://status.npmjs.org/) - [Contact npm](https://www.npmjs.com/support) ### Company - [About](https://www.npmjs.com/about) - [Blog](https://github.blog/tag/npm/) - [Press](https://www.npmjs.com/press) ### Terms & Policies - [Policies](https://www.npmjs.com/policies/) - [Terms of Use](https://www.npmjs.com/policies/terms) - [Code of Conduct](https://www.npmjs.com/policies/conduct) - [Privacy](https://www.npmjs.com/policies/privacy)
Readable Markdownnull
Shard74 (laksa)
Root Hash1717991728988514674
Unparsed URLcom,npmjs!www,/package/node-simconnect s443