JSON gönderin ve alın¶
Bu eğitimde, JSON mesajlarını nasıl gönderip alabileceğinizi açıklıyoruz.
TCP ve WebSocket
JSON ile çalışırken, bir TCP bağlantısı veya bir WebSocket bağlantısı kullanabilirsiniz.
JSON gönderin ¶
Entegrasyonunuzda JSON kullanmayı seçerseniz, cTrader arka ucuna geçerli JSON içeren dizeler göndermeniz gerekecektir. Bu dizeler olarak iletilen JSON nesneleri aşağıdaki anahtarları içermelidir.
| Anahtar | Değer veri türü | Tanım |
|---|---|---|
"clientMsgId" | dize | Bir mesajın benzersiz kimliği. Bu kimlik istemci tarafında oluşturulmalı ve atanmalıdır. |
"payloadType" | tam sayı | Mesajı temsil eden tam sayı. Geçerli yük türlerinin tam listesi ProtoOAPayloadType içinde yer almaktadır. |
"payload" | JSON nesnesi | Mesajın gerçek içeriğini içeren iç içe bir JSON nesnesi. |
Geçerli bir dizenin ( ProtoOAApplicationAuthReq mesajını temsil eden) bir örneği aşağıda bulunabilir.
"{"clientMsgId": "cm_id_2", "payloadType": 2100, "payload": {"clientId": "34Rsd_T098asHkl","clientSecret": "validClientSecret"}}"
Doğru JSON dizeleri göndermek için, seçtiğiniz programlama dilinde serileştirme için özel bir mekanizma oluşturmanız gerekecektir.
Aşağıdaki örneklerde, serileştirmeyi ele almak için çeşitli yaklaşımlar tanımlıyoruz. Tercih ettiğiniz programlama diline ve tasarım desenlerine bağlı olarak kendi uygulamanızı yapabilirsiniz (ve yapmalısınız).
Aşağıda, iki temel sınıf tanımlıyoruz ve ardından ProtoOAApplicationAuthReq mesajının özel bir temsilini oluşturuyoruz.
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 | |
Tüm Open API mesajları için bir temel sınıf oluşturuyoruz ve gösterim amacıyla ProtoOAApplicationAuthReq sınıfını tanımlıyoruz.
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 | |
Gerekli mantığı uyguladıktan sonra, bu mesajları temsil eden sınıfların yeni örneklerini oluşturarak ve ardından bunları tercih ettiğiniz TCP veya WebSocket istemcisine ileterek cTrader arka ucuna yeni mesajlar gönderebilmelisiniz.
Receive JSON ¶
JSON mesajlarını almak ve işlemek için, bir JSON dizesini bir Open API mesajının gösterimine seri durumdan çıkarmak için bir yöntem uygulamanız gerekir.
Bu yöntemi uygulamak için, yük türlerinin, mesajları temsil eden sınıfların adlarıyla anahtar olabileceği bir eşlem (veya sözlük) başlatmanız faydalı olabilir. İstisna işleme amaçları için, aldığınız mesajın yük türünün bu eşlemde veya sözlükte bir anahtar olup olmadığını doğrulamanız gerekebilir. Böyle bir anahtar varsa, mesajı uygun herhangi bir mantık kullanarak seri durumdan çıkarabilirsiniz.
Böyle bir yöntem uyguladıktan sonra, her yeni mesaj aldığınızda tetiklenen bir geri arama olarak kullanabilirsiniz.
Aşağıdaki örnekte TMessage'ın genel bir tür olduğunu unutmayın.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
Alt Tür Dönüşümü
ReadMessage() yöntemi aslında belirli bir mesaj sınıfı döndürmez; bir mesaj alırken alt tür dönüşümünü ayrı olarak ele almanız gerekecektir.
ApplicationAuthReq sınıfımıza aşağıdaki yöntemi ekliyoruz.
1 2 3 | |
Ardından readMessage geri aramamızı ekliyor ve bir sözlükten bir yük alıyoruz.
1 2 3 4 5 6 7 8 9 | |
Alt Tür Dönüşümü
Python ördek tipli olduğundan, alt tür dönüşümünü ayrı olarak ele almaya gerek yoktur. JSON dizesini alırken gerekli türe seri durumdan çıkarabilirsiniz.