A React Native Package for checking tcp and udp port availability on native android.
This is an implementation coming from the Apache camel project.
This package is only supported on android devices, since i'm not much of an iOS Developer. The source code is pretty much straightforward so feel free to submit a PR of an iOS port i'll be happy to merge ! :)
npm i -S react-native-portavailable
-
Add the following line to the bottom of your project's
settings.gradle
file.project(':react-native-portavailable').projectDir = new File(settingsDir, '../node_modules/react-native-portavailable/android')
-
Change the
include
line of your project'ssettings.gradle
to include the:react-native-portavailable
project.include ':react-native-portavailable', ':app'
-
Open your app's
build.gradle
file and add the following line to thedependencies
block.compile project(":react-native-portavailable")
-
In your app's
MainActivity.java
file, addnew PortAvailableReactModule()
to the return statement of thegetPackages()
function.
...
new MainReactPackage(),
new PortAvailableReactModule()
...
- Then in the same file add the import statement :
import com.odinvt.portavailable.PortAvailableReactModule;
import PortAvailable from 'react-native-portavailable'
The calls to PortAvailable
methods are static so you can go ahead and use it directly.
- This will return a
Promise
instance that resolves to aboolean
of the availability of the port. We're handling sockets opened and closed on the native side so we do need to expect an async execution. There is no need to use acatch
method on the Promise object since all the exceptions are caught on the native side and the Promise just resolves to false.
Example :
PortAvailable.check(48500).then(available => {
// 'available' is true if the port 48500 is available
})
PortAvailable.checkRange(min_port, max_port, stop = 0)
Checks which of the ports between 'min_port' and 'max_port' (included) are available
- This will return a
Promise
instance that resolves to anarray
of the available ports. - The
stop
parameter is optional and tells the function at how much available ports it should stop checking and resolve.stop = 0
is the default value and it tells the function to just check all the ports untilmax_port
.
Example :
PortAvailable.checkRange(48500, 48600, 5).then(ports => {
// 'ports' is an array of the available ports
// for example : ports = [48500, 48501, 48502, 48503, 48505] if 48504 is not available
})
- This will return an
array
of the available ports. - The preferred way of getting the discovered ports is inside the
PortAvailable.checkRange
then
callback. This method is provided so you can access the discovered ports anywhere on your application but only if you're sure that thePortAvailable.getPorts()
call is made after thePortAvailable.checkRange
Promise resolves .
Example :
let open_ports = PortAvailable.getPorts();
// open_ports = [48500, 48501, 48502, 48503, 48505]
This component uses ES6. So if you're using Webpack
you should launch babel
on main.js
and output to main-tf.js
if for some reason the npm postinstall
script didn't execute.
"postinstall": "babel main.js --out-file main-tf.js"