Kirim dan terima JSON¶
Dalam tutorial ini, kami menjelaskan bagaimana Anda dapat mengirim dan menerima pesan JSON.
TCP dan WebSocket
Saat bekerja dengan JSON, Anda dapat menggunakan koneksi TCP atau koneksi WebSocket.
Kirim JSON ¶
Jika Anda memilih untuk menggunakan JSON dalam integrasi Anda, Anda harus mengirim string yang berisi JSON yang valid ke backend cTrader. Objek JSON yang diteruskan sebagai string ini harus berisi kunci berikut.
| Kunci | Tipe data nilai | Definisi |
|---|---|---|
"clientMsgId" | string | ID unik dari sebuah pesan. ID ini harus dibuat dan ditetapkan di sisi klien. |
"payloadType" | integer | Integer yang mewakili pesan. Daftar lengkap jenis payload yang valid termasuk dalam ProtoOAPayloadType. |
"payload" | Objek JSON | Objek JSON bersarang yang berisi konten sebenarnya dari pesan. |
Contoh string yang valid (mewakili pesan ProtoOAApplicationAuthReq) dapat ditemukan di bawah ini.
"{"clientMsgId": "cm_id_2", "payloadType": 2100, "payload": {"clientId": "34Rsd_T098asHkl","clientSecret": "validClientSecret"}}"
Untuk mengirim string JSON yang benar, Anda perlu membuat mekanisme serialisasi khusus dalam bahasa pemrograman pilihan Anda.
Dalam contoh di bawah ini, kami mendefinisikan beberapa pendekatan untuk menangani serialisasi. Anda dapat (dan harus) mengimplementasikan sendiri tergantung pada bahasa pemrograman dan pola desain yang Anda pilih.
Di bawah ini, kami mendefinisikan dua kelas dasar dan kemudian membuat representasi khusus dari pesan ProtoOAApplicationAuthReq.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | |
Kami membuat kelas dasar untuk semua pesan Open API dan, untuk tujuan demonstrasi, mendefinisikan kelas untuk ProtoOAApplicationAuthReq.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | |
Setelah mengimplementasikan logika yang diperlukan, Anda seharusnya dapat mengirim pesan baru ke backend cTrader dengan membuat instance baru dari kelas yang mewakili pesan ini dan kemudian meneruskannya ke klien TCP atau WebSocket pilihan Anda.
Terima JSON ¶
Untuk menerima dan memproses pesan JSON, Anda harus mengimplementasikan metode untuk mendeserialisasi string JSON menjadi representasi pesan Open API.
Untuk mengimplementasikan metode ini, Anda mungkin merasa membantu untuk menginisialisasi peta (atau kamus) di mana jenis payload dapat menjadi kunci dengan nama kelas yang mewakili pesan bertindak sebagai nilai. Untuk tujuan penanganan pengecualian, Anda mungkin ingin memverifikasi apakah jenis payload dari pesan yang Anda terima adalah kunci dalam peta atau kamus ini. Jika kunci tersebut ada, Anda dapat mendeserialisasi pesan menggunakan logika yang sesuai.
Setelah mengimplementasikan metode seperti itu, Anda dapat menggunakannya sebagai callback yang dipicu setiap kali Anda menerima pesan baru.
Perhatikan bahwa dalam contoh di bawah ini TMessage adalah tipe generik.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
Downcasting
Metode ReadMessage() sebenarnya tidak mengembalikan kelas pesan tertentu; Anda perlu menangani downcasting secara terpisah saat menerima pesan.
Kami menambahkan metode berikut ke kelas ApplicationAuthReq kami.
1 2 3 | |
Kami kemudian menambahkan callback readMessage kami dan mengambil payload dari kamus.
1 2 3 4 5 6 7 8 9 | |
Downcasting
Karena Python bersifat duck-typed, tidak perlu menangani downcasting secara terpisah. Anda dapat mendeserialisasi string JSON ke tipe yang diperlukan saat menerimanya.