Overview
Deskripsi Umum
Secara umum, pengguna jasa akan membuka bid pada platform NLE, dan melalui API ini akan diteruskan ke masing-masing API milik penyedia platform. Penyedia platform akan membuka bid di platformnya sesuai dengan data yang diterima dari API ini. Ketika ada yang melakukan bid di platform tersebut maka data bid tersebut akan diteruskan kembali ke NLE dan disimpan di database NLE. Data tersebut akan dilihat oleh pengguna jasa untuk memilih sarana pengangkut. Ketika pilihan sudah ditentukan maka akan diteruskan ke platform terkait dan mengirimkan ke semua platform bahwa bid telah selesai melalui API ini.

Platform NLE Ke Platform Trucking
Request offers ke Trucking Platform (API01) dan booking Truck (API04) menggunakan Kafka sebagai message broker untuk kemudian diteruskan ke beberapa Trucking Platform sebagai Consumer.
Alur Transaksi Data API01 dan API04

Trucking Platform dapat menggunakan WebSocket Kafka Consumer yang telah disediakan oleh tim Developer NLE pada link berikut: https://gitlab.com/arifkurn/truckingconsumer
Untuk menjalankan tool pada link diatas, perlu dibuat file .env sebagai berikut.
websocket_server=esbbcext01.beacukai.go.id
websocket_port=8086
websocket_token={WEBSOCKET_TOKEN}
platform_id={ID_PLATFORM}
Harap diperhatikan bahwa websocket_token dan platform_id diatas khusus untuk platform {nama_platform}. Simpan file .env pada folder root aplikasi node yang telah diunduh.
Pembuatan Kafka Consumer
Berikut adalah contoh langkah-langkah pembuatan Kafka Consumer melalui protocol WebSocket menggunakan bahasa pemograman NodeJs.
Koneksi ke NLE Websocket Server
Koneksi ke NLE WebSocket Server menggunakan Websocket-SubProtocol sebagai token authentifikasi Trucking Platform untuk mendapatkan akses mengconsume data API01 dan API04 dari Kafka.
const WebSocket = require(‘websocket’).client;
const client = new WebSocket();
client.connect(‘ws:// esbbcext01.beacukai.go.id:8086’, ‘WEBSOCKET_TOKEN’);
2. Kirim message untuk subscribe topic ‘dev-booking’ (API01) dan topic ‘dev-selectedOffer’ (API04).
client.on(‘connect’, function(connection) {
if (connection.connected) {
var subscribeAPI01 = {
type: “subscribe”,
groupId: “ID_PLATFORM”,
topic: “dev-booking”,
key: “ID_PLATFORM”
};
var subscribeAPI04 = {
type: “subscribe”,
groupId: “ID_PLATFORM”,
topic: “dev-selectedOffer”,
key: “ID_PLATFORM”
};
connection.sendUTF(JSON.stringify(subscribeAPI01));
connection.sendUTF(JSON.stringify(subscribeAPI04));
}
});
3. Olah message yang diterima berisi data API01 atau API04.
client.on(‘connect’, function(connection) {
connection.on('message', function(message) {
if (message.type === 'utf8') {
var contentMessage = message.utf8Data;
var parsedMessage = JSON.parse(contentMessage);
var status = parsedMessage.status || null;
if ( status === "ok" ) {
if ( parsedMessage.topic === “dev-booking”) {
//Olah parsedMessage.data yang berisi JSON Data API01
}
if ( parsedMessage.topic === “dev-selectedOffer”) {
//Olah parsedMessage.data yang berisi JSON Data API04
}
}
}
});
});
Last updated
Was this helpful?