[TOC]
کریپٹو کرنسی تجارتی حجم کی تیز رفتار ترقی کے ساتھ، ریئل ٹائم ڈیٹا پش کی کارکردگی اور استحکام بہت اہم ہو گیا ہے۔ پروٹوکول بفرز (پروٹوبف) پر مبنی MEXC ایکسچینج کا نیا لانچ کیا گیا WebSocket پش سلوشن روایتی JSON فارمیٹس کے مقابلے میں زیادہ ٹرانسمیشن کی کارکردگی اور کم لیٹنسی پیش کرتا ہے۔ یہ مضمون FMZ مقداری تجارتی پلیٹ فارم پر MEXC کے نئے WebSocket پروٹوبف انٹرفیس کا استعمال کرتے ہوئے ڈیٹا تک رسائی اور اس پر کارروائی کرنے کا طریقہ بتاتا ہے۔
پروٹوکول بفرز گوگل کے تیار کردہ ڈیٹا ڈھانچے کو سیریلائز کرنے کے لیے زبان سے آزاد اور پلیٹ فارم سے آزاد طریقہ ہے۔ JSON فارمیٹ کے مقابلے میں، protobuf کے درج ذیل فوائد ہیں:
MEXC کا نیا شامل کردہ WebSocket پروٹوبف پش انٹرفیس بنیادی طور پر درج ذیل ڈیٹا اسٹریمز فراہم کرتا ہے:
https://www.mexc.com/zh-MY/api-docs/spot-v3/websocket-market-streams
Private PrivateAccountV3Api PrivateDealsV3Api PrivateOrdersV3Api
Public PublicAggreBookTickerV3Api PublicAggreDealsV3Api PublicBookTickerV3Api …
FMZ پلیٹ فارم پر MEXC protobuf WebSocket انٹرفیس کو لاگو کرنے کے لیے درج ذیل تیاریوں کی ضرورت ہے:
قائم کرناPublicAggreDealsV3Apiایک مثال کے طور پر چینل کنکشن لیں:
function main() {
var payload = {
"method": "SUBSCRIPTION",
"params": [
"[email protected]@100ms@BTCUSDT"
]
}
var conn = Dial("wss://wbs-api.mexc.com/ws|payload=" + JSON.stringify(payload))
while (true) {
var ret = conn.read()
if (ret) {
Log(ret)
}
}
}
مطلوبہ .proto فائل تلاش کریں:
https://github.com/mexcdevelop // آپ ایکسچینج کی پروٹو فائلیں یہاں تلاش کر سکتے ہیں
syntax = "proto3";
option java_package = "com.mxc.push.common.protobuf";
option optimize_for = SPEED;
option java_multiple_files = true;
option java_outer_classname = "PushDataV3ApiWrapperProto";
message PublicAggreDealsV3Api {
repeated PublicAggreDealsV3ApiItem deals = 1;
string eventType = 2;
}
message PublicAggreDealsV3ApiItem {
string price = 1;
string quantity = 2;
int32 tradeType = 3;
int64 time = 4;
}
message PushDataV3ApiWrapper {
string channel = 1;
oneof body {
PublicAggreDealsV3Api publicAggreDeals = 314;
}
optional string symbol = 3;
optional string symbolId = 4;
optional int64 createTime = 5;
optional int64 sendTime = 6;
}
چونکہ FMZ پلیٹ فارم جاوا اسکرپٹ پر مبنی ہے، ہمیں بائنری ڈیٹا کو ہینڈل کرنے کے لیے protobuf.js لائبریری استعمال کرنے کی ضرورت ہے:
جے ایس لائبریری لوڈنگ ایڈریس:
https://cdnjs.cloudflare.com/ajax/libs/protobufjs/7.5.3/protobuf.js
WebSocket انٹرفیس کے ذریعہ دھکیل دیا گیا ڈیٹا بائنری ڈیٹا ہے اور اسے ڈی کوڈ کرنے کی ضرورت ہے:
while (true) {
var ret = conn.read()
if (ret) {
const uint8arrayData = new Uint8Array(ret)
const message = PushDataV3ApiWrapper.decode(uint8arrayData)
data = PushDataV3ApiWrapper.toObject(message, {
longs: String,
enums: String,
bytes: String,
defaults: true,
arrays: true,
objects: true
})
Log("data:", data)
}
LogStatus(_D(), data)
}
let strPushDataV3ApiWrapper = `syntax = "proto3";
option java_package = "com.mxc.push.common.protobuf";
option optimize_for = SPEED;
option java_multiple_files = true;
option java_outer_classname = "PushDataV3ApiWrapperProto";
message PublicAggreDealsV3Api {
repeated PublicAggreDealsV3ApiItem deals = 1;
string eventType = 2;
}
message PublicAggreDealsV3ApiItem {
string price = 1;
string quantity = 2;
int32 tradeType = 3;
int64 time = 4;
}
message PushDataV3ApiWrapper {
string channel = 1;
oneof body {
PublicAggreDealsV3Api publicAggreDeals = 314;
}
optional string symbol = 3;
optional string symbolId = 4;
optional int64 createTime = 5;
optional int64 sendTime = 6;
}`
let code = HttpQuery("https://cdnjs.cloudflare.com/ajax/libs/protobufjs/7.5.3/protobuf.js")
let exports = {}
let module = { exports }
new Function("module", "exports", code)(module, exports)
let protobuf = module.exports
function main() {
const PushDataV3ApiWrapper = protobuf.parse(strPushDataV3ApiWrapper).root.lookupType("PushDataV3ApiWrapper")
var payload = {
"method": "SUBSCRIPTION",
"params": [
"[email protected]@100ms@BTCUSDT"
]
}
// proxy=socks5://x.x.x.x:xxxx
var conn = Dial("wss://wbs-api.mexc.com/ws|payload=" + JSON.stringify(payload))
var data = null
while (true) {
var ret = conn.read()
if (ret) {
const uint8arrayData = new Uint8Array(ret)
const message = PushDataV3ApiWrapper.decode(uint8arrayData)
data = PushDataV3ApiWrapper.toObject(message, {
longs: String,
enums: String,
bytes: String,
defaults: true,
arrays: true,
objects: true
})
Log("data:", data)
}
LogStatus(_D(), data)
}
}

جیسا کہ آپ دیکھ سکتے ہیں، انٹرفیس کے ذریعے دھکیل دیا گیا بائنری ڈیٹا موصول ہوتا ہے، اور ڈی کوڈنگ کے بعد، پڑھنے کے قابل ڈیٹا کو پرنٹ کیا جاتا ہے:
{
"channel":"[email protected]@100ms@BTCUSDT",
"symbol":"BTCUSDT",
"sendTime":"1754487330985",
"publicAggreDeals":{
"deals":[
{"price":"113897.97","quantity":"0.00003103","tradeType":2,"time":"1754487330933"},
{"price":"113897.97","quantity":"0.00095331","tradeType":2,"time":"1754487330934"},
{"price":"113897.97","quantity":"0.00154766","tradeType":2,"time":"1754487330935"}
],
"eventType":"[email protected]@100ms"
}
}
FMZ پلیٹ فارم پر MEXC کے protobuf WebSocket انٹرفیس کو نافذ کرنے سے، ہم درج ذیل فوائد حاصل کرتے ہیں:
یہ پروگرام خاص طور پر اس کے لیے موزوں ہے:
یہ مضمون MEXC ایکسچینج کے تازہ ترین WebSocket protobuf انٹرفیس تفصیلات کی بنیاد پر لکھا گیا ہے۔ FMZ پلیٹ فارم پر کوڈ کی مثالوں کی جانچ اور تصدیق کی گئی ہے۔