Skip to content

Commit 22c3799

Browse files
authored
Merge branch 'master' into minor-fixes
2 parents 84c451c + b5414a1 commit 22c3799

File tree

4 files changed

+44
-21
lines changed

4 files changed

+44
-21
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ server.start().then((url) => {
2727

2828
// Stop the server
2929
server.stop();
30+
31+
// Check if native server running
32+
const isRunning = await server.isRunning()
33+
// isRunning - true/false
3034
```
3135

3236
`StaticServer` serves from the document directory (default) or takes an optional absolute path to serve from.

android/src/main/java/com/futurepress/staticserver/FPStaticServerModule.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,11 @@ public void origin(Promise promise) {
177177
}
178178
}
179179

180+
@ReactMethod
181+
public void isRunning(Promise promise) {
182+
promise.resolve(server != null && server.isAlive());
183+
}
184+
180185
/* Shut down the server if app is destroyed or paused */
181186
@Override
182187
public void onHostResume() {

index.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,15 @@ class StaticServer {
111111
return this._origin;
112112
}
113113

114+
isRunning() {
115+
return FPStaticServer.isRunning()
116+
.then(running => {
117+
this.running = running;
118+
119+
return this.running;
120+
})
121+
}
122+
114123
}
115124

116125
export default StaticServer;

ios/FPStaticServer.m

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ @implementation FPStaticServer
88

99
- (instancetype)init {
1010
if((self = [super init])) {
11-
11+
1212
[GCDWebServer self];
1313
_webServer = [[GCDWebServer alloc] init];
1414
}
1515
return self;
1616
}
1717

1818
- (void)dealloc {
19-
19+
2020
if(_webServer.isRunning == YES) {
2121
[_webServer stop];
2222
}
@@ -36,9 +36,9 @@ - (dispatch_queue_t)methodQueue
3636
keepAlive:(BOOL *)keep_alive
3737
resolver:(RCTPromiseResolveBlock)resolve
3838
rejecter:(RCTPromiseRejectBlock)reject) {
39-
39+
4040
NSString * root;
41-
41+
4242
if( [optroot isEqualToString:@"DocumentDir"] ){
4343
root = [NSString stringWithFormat:@"%@", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] ];
4444
} else if( [optroot isEqualToString:@"BundleDir"] ){
@@ -48,8 +48,8 @@ - (dispatch_queue_t)methodQueue
4848
} else {
4949
root = [NSString stringWithFormat:@"%@/%@", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0], optroot ];
5050
}
51-
52-
51+
52+
5353
if(root && [root length] > 0) {
5454
self.www_root = root;
5555
}
@@ -61,26 +61,26 @@ - (dispatch_queue_t)methodQueue
6161
} else {
6262
self.port = [NSNumber numberWithInt:-1];
6363
}
64-
65-
64+
65+
6666
self.keep_alive = keep_alive;
6767

6868
self.localhost_only = localhost_only;
69-
69+
7070
if(_webServer.isRunning != NO) {
7171
NSLog(@"StaticServer already running at %@", self.url);
7272
resolve(self.url);
7373
return;
7474
}
75-
75+
7676
[_webServer addGETHandlerForBasePath:@"/" directoryPath:self.www_root indexFilename:@"index.html" cacheAge:3600 allowRangeRequests:YES];
77-
77+
7878
NSError *error;
7979
NSMutableDictionary* options = [NSMutableDictionary dictionary];
80-
81-
80+
81+
8282
NSLog(@"Started StaticServer on port %@", self.port);
83-
83+
8484
if (![self.port isEqualToNumber:[NSNumber numberWithInt:-1]]) {
8585
[options setObject:self.port forKey:GCDWebServerOption_Port];
8686
} else {
@@ -90,12 +90,12 @@ - (dispatch_queue_t)methodQueue
9090
if (self.localhost_only == YES) {
9191
[options setObject:@(YES) forKey:GCDWebServerOption_BindToLocalhost];
9292
}
93-
93+
9494
if (self.keep_alive == YES) {
9595
[options setObject:@(NO) forKey:GCDWebServerOption_AutomaticallySuspendInBackground];
9696
[options setObject:@2.0 forKey:GCDWebServerOption_ConnectedStateCoalescingInterval];
9797
}
98-
98+
9999

100100
if([_webServer startWithOptions:options error:&error]) {
101101
NSNumber *listenPort = [NSNumber numberWithUnsignedInteger:_webServer.port];
@@ -110,16 +110,16 @@ - (dispatch_queue_t)methodQueue
110110
}
111111
} else {
112112
NSLog(@"Error starting StaticServer: %@", error);
113-
113+
114114
reject(@"server_error", @"StaticServer could not start", error);
115-
115+
116116
}
117-
117+
118118
}
119119

120120
RCT_EXPORT_METHOD(stop) {
121121
if(_webServer.isRunning == YES) {
122-
122+
123123
[_webServer stop];
124124

125125
NSLog(@"StaticServer stopped");
@@ -135,10 +135,15 @@ - (dispatch_queue_t)methodQueue
135135
}
136136
}
137137

138+
RCT_EXPORT_METHOD(isRunning:(RCTPromiseResolveBlock)resolve
139+
rejecter:(RCTPromiseRejectBlock)reject) {
140+
bool isRunning = _webServer != nil &&_webServer.isRunning == YES;
141+
resolve(@(isRunning));
142+
}
143+
138144
+ (BOOL)requiresMainQueueSetup
139145
{
140146
return YES;
141147
}
142148

143149
@end
144-

0 commit comments

Comments
 (0)