Skip to content

Commit c4ea934

Browse files
committed
Added Draft HTTP Health Check
1 parent 80880ae commit c4ea934

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/HttpHealthCheckDraft.java renamed to OCPP-J/src/main/java/eu/chargetime/ocpp/Draft_HttpHealthCheck.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package eu.chargetime.ocpp;
2-
2+
/*
3+
* Based ON https://github.com/TooTallNate/Java-WebSocket/issues/1077
4+
*/
35
import org.java_websocket.WebSocketImpl;
46
import org.java_websocket.drafts.Draft;
57
import org.java_websocket.enums.CloseHandshakeType;
@@ -14,9 +16,11 @@
1416
import java.util.Collections;
1517
import java.util.List;
1618

17-
class HttpHealthCheckDraft extends Draft {
19+
class Draft_HttpHealthCheck extends Draft {
20+
21+
static final int HTTP_HEALTH_CHECK_CLOSE_CODE = 10200;
1822

19-
private Boolean isHttp(ClientHandshake handshakedata) {
23+
static Boolean isHttp(ClientHandshake handshakedata) {
2024
String upgradeField = handshakedata.getFieldValue("Upgrade");
2125
return upgradeField == null || upgradeField == "";
2226
}
@@ -28,7 +32,7 @@ public List<ByteBuffer> createHandshake(Handshakedata handshakedata, boolean wit
2832
"HTTP/1.0 200 OK\r\n" +
2933
"Mime-Version: 1.0\r\n" +
3034
"Content-Type: text/html\r\n" +
31-
"Content-Length: ${content.size}\r\n" +
35+
"Content-Length: " + content.length + " \r\n" +
3236
"Connection: close\r\n" +
3337
"\r\n"
3438
);

OCPP-J/src/main/java/eu/chargetime/ocpp/WebSocketListener.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ public void open(String hostname, int port, ListenerEvents handler) {
8787
drafts) {
8888
@Override
8989
public void onOpen(WebSocket webSocket, ClientHandshake clientHandshake) {
90+
if(Draft_HttpHealthCheck.isHttp(clientHandshake)){
91+
logger.debug("On HTTP Request, for heathcheck");
92+
webSocket.close(Draft_HttpHealthCheck.HTTP_HEALTH_CHECK_CLOSE_CODE);
93+
return;
94+
}
9095
logger.debug(
9196
"On connection open (resource descriptor: {})",
9297
clientHandshake.getResourceDescriptor());
@@ -183,6 +188,9 @@ public void onClose(WebSocket webSocket, int code, String reason, boolean remote
183188
reason,
184189
remote);
185190

191+
if(code == Draft_HttpHealthCheck.HTTP_HEALTH_CHECK_CLOSE_CODE)
192+
return;
193+
186194
WebSocketReceiver receiver = sockets.get(webSocket);
187195
if (receiver != null) {
188196
receiver.disconnect();

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/JSONServer.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,13 @@ public JSONServer(ServerCoreProfile coreProfile, JSONConfiguration configuration
6868
protocols.add(new Protocol("ocpp1.6"));
6969
protocols.add(new Protocol(""));
7070
draftOcppOnly = new Draft_6455(Collections.emptyList(), protocols);
71-
logger.info("JSONServer 1.6 with HttpHealthCheckDraft");
72-
this.listener = new WebSocketListener(sessionFactory, configuration, draftOcppOnly, new HttpHealthCheckDraft());
71+
72+
if(configuration.getParameter("HTTP_HEALTH_CHECK_ENABLED", true)) {
73+
logger.info("JSONServer 1.6 with HttpHealthCheckDraft");
74+
this.listener = new WebSocketListener(sessionFactory, configuration, draftOcppOnly, new Draft_HttpHealthCheck());
75+
} else {
76+
this.listener = new WebSocketListener(sessionFactory, configuration, draftOcppOnly);
77+
}
7378
server = new Server(this.listener, featureRepository, new PromiseRepository());
7479
featureRepository.addFeatureProfile(coreProfile);
7580
}

0 commit comments

Comments
 (0)