وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ڈائل کریں

ابتدائی کے لئےSocketرسائی، حمایتtcp, udp, tls, unixپروٹوکول۔ 4 مقبول مواصلاتی پروٹوکول کی حمایت:mqtt, nats, amqp, kafkaڈیٹا بیس سے رابطہ قائم کرنے کی حمایت:sqlite3, mysql, postgres, clickhouse.

کےDial()اگر یہ ٹائم آؤٹ ہوتا ہے تو فنکشن null لوٹاتا ہے۔ ایک عام کال ایک کنکشن آبجیکٹ لوٹاتا ہے جس میں تین طریقے ہیں:read, writeاورclose.readڈیٹا کو پڑھنے کے لئے استعمال کیا جاتا ہے،writeڈیٹا بھیجنے کے لئے استعمال کیا جاتا ہے اورcloseکنکشن بند کرنے کے لئے استعمال کیا جاتا ہے. کےreadطریقہ مندرجہ ذیل پیرامیٹرز کی حمایت کرتا ہے:

  • جب کوئی پیرامیٹر منتقل نہیں کیا جاتا ہے تو، یہ ایک پیغام دستیاب ہے اور واپسی تک بلاک کرتا ہے، جیسے:ws.read().
  • جب پیرامیٹر کے طور پر پاس کیا جاتا ہے تو ، یونٹ ملی سیکنڈ ہوتا ہے ، جس میں پیغام کے انتظار کے وقت کی مدت کی وضاحت ہوتی ہے۔ مثال کے طور پر:ws.read(2000)دو سیکنڈ (2000 ملی سیکنڈ) کا ٹائم آؤٹ بتاتا ہے۔
  • مندرجہ ذیل دو پیرامیٹرز صرف ویب ساکٹ کے لئے درست ہیں: پیرامیٹر منتقل کرنا-1اس کا مطلب یہ ہے کہ فنکشن فوری طور پر پیغام کی موجودگی یا غیر موجودگی سے قطع نظر واپس آتا ہے، مثال کے طور پر:ws.read(-1). پیرامیٹر منتقل کرنا-2اس کا مطلب یہ ہے کہ فنکشن فوری طور پر پیغام کے ساتھ یا اس کے بغیر واپس آتا ہے ، لیکن صرف تازہ ترین پیغام واپس کیا جاتا ہے ، اور بفر شدہ پیغام کو ضائع کردیا جاتا ہے۔ مثال کے طور پر ،ws.read(-2).

read()فنکشن بفر کی تفصیل: ویب ساکٹ پروٹوکول کی طرف سے دھکا آنے والے اعداد و شمار کی حکمت عملی کے درمیان وقت کے وقفے اگر ڈیٹا جمع ہو سکتا ہےread()فنکشن کالز بہت لمبی ہوتی ہیں۔ یہ ڈیٹا بفر میں محفوظ ہوتے ہیں ، جس میں زیادہ سے زیادہ 2000 کی قطار کی ڈیٹا ڈھانچہ ہوتی ہے۔ 2000 سے تجاوز کرنے کے بعد ، تازہ ترین ڈیٹا بفر میں داخل ہوتا ہے اور پرانے ڈیٹا کو صاف کردیا جاتا ہے۔

منظرنامہ کوئی پیرامیٹر نہیں پیرامیٹر: -1 پیرامیٹر: -2 پیرامیٹر: 2000، ملی سیکنڈ میں
ڈیٹا پہلے ہی بفر میں ہے فوری طور پر سب سے پرانے اعداد و شمار کو واپس کریں فوری طور پر سب سے پرانے اعداد و شمار کو واپس کریں فوری طور پر تازہ ترین ڈیٹا واپس کریں فوری طور پر سب سے پرانے اعداد و شمار کو واپس کریں
بفر میں کوئی ڈیٹا نہیں جب ڈیٹا کو بلاک کیا جائے تو واپس کریں فوری طور پر null لوٹائیں فوری طور پر null لوٹائیں انتظار کریں 2000 MS، null واپس اگر کوئی ڈیٹا نہیں ہے، null واپس اگر کوئی ڈیٹا ہے
WebSocket کنکشن منقطع یا بنیادی کی طرف سے دوبارہ منسلک کیا جاتا ہے read() فنکشن خالی سٹرنگ لوٹاتا ہے ، یعنی: ، اور لکھنا() فنکشن 0 لوٹاتا ہے۔ صورتحال کا پتہ چلتا ہے۔ آپ close() فنکشن کا استعمال کرتے ہوئے کنکشن بند کرسکتے ہیں ، یا اگر آپ نے خودکار دوبارہ رابطہ قائم کیا ہے تو ، آپ کو اسے بند کرنے کی ضرورت نہیں ہے ، بنیادی نظام اسے خود بخود دوبارہ جوڑ دے گا۔

چیز

ڈائل (ایڈریس) ڈائل کریں (ایڈریس، ٹائم آؤٹ)

درخواست کا پتہ۔ ایڈریس سچ سٹرنگ ٹائم آؤٹ سیکنڈ، ٹائم آؤٹ غلط نمبر

function main(){
    // Dial supports tcp://,udp://,tls://,unix://protocol, you can add a parameter to specify the number of seconds for the timeout
    var client = Dial("tls://www.baidu.com:443")  
    if (client) {
        // write can be followed by a numeric parameter to specify the timeout, write returns the number of bytes successfully sent
        client.write("GET / HTTP/1.1\nConnection: Closed\n\n")
        while (true) {
            // read can be followed by a numeric parameter specifying the timeout in milliseconds. Returning null indicates an error or timeout or that the socket has been closed
            var buf = client.read()
            if (!buf) {
                 break
            }
            Log(buf)
        }
        client.close()
    }
}
def main():
    client = Dial("tls://www.baidu.com:443")
    if client:
        client.write("GET / HTTP/1.1\nConnection: Closed\n\n")
        while True:
            buf = client.read()
            if not buf:
                break
            Log(buf)
        client.close()
void main() {
    auto client = Dial("tls://www.baidu.com:443");
    if(client.Valid) {
        client.write("GET / HTTP/1.1\nConnection: Closed\n\n");
        while(true) {
            auto buf = client.read();
            if(buf == "") {
                break;
            }
            Log(buf);
        }
        client.close();
    }
}

ڈائل فنکشن کال کا مثال:

function main() {
    LogStatus("Connecting...")
    // Accessing WebSocket interface of Binance
    var client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr")
    if (!client) {
        Log("Connection failed, program exited")
        return
    }
    
    while (true) {
        // read returns only the data retrieved after the read call
        var buf = client.read()      
        if (!buf) {
            break
        }
        var table = {
            type: 'table',
            title: 'Ticker Chart',
            cols: ['Currency', 'Highest', 'Lowest', 'Buy 1', 'Sell 1', 'Last traded price', 'Volume', 'Update time'],
            rows: []
        }
        var obj = JSON.parse(buf)
        _.each(obj, function(ticker) {
            table.rows.push([ticker.s, ticker.h, ticker.l, ticker.b, ticker.a, ticker.c, ticker.q, _D(ticker.E)])
        })
        LogStatus('`' + JSON.stringify(table) + '`')
    }
    client.close()
}
import json
def main():
    LogStatus("Connecting...")
    client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr")
    if not client:
        Log("Connection failed, program exited")
        return 
    
    while True:
        buf = client.read()
        if not buf:
            break
        table = {
            "type" : "table", 
            "title" : "Ticker Chart", 
            "cols" : ['Currency', 'Highest', 'Lowest', 'Buy 1', 'Sell 1', 'Last traded price', 'Volume', 'Update time'], 
            "rows" : [] 
        }
        obj = json.loads(buf)
        for i in range(len(obj)):
            table["rows"].append([obj[i]["s"], obj[i]["h"], obj[i]["l"], obj[i]["b"], obj[i]["a"], obj[i]["c"], obj[i]["q"], _D(int(obj[i]["E"]))])
        LogStatus('`' + json.dumps(table) + '`')
    client.close()
void main() {
    LogStatus("Connecting...");
    auto client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr");
    if(!client.Valid) {
        Log("Connection failed, program exited");
        return;
    }
    
    while(true) {
        auto buf = client.read();
        if(buf == "") {
            break;
        }
        json table = R"({
            "type" : "table", 
            "title" : "Ticker Chart", 
            "cols" : ["Currency", "Highest", "Lowest", "Buy 1", "Sell 1", "Last traded price", "Volume", "Update time"], 
            "rows" : []
        })"_json;
        json obj = json::parse(buf);
        for(auto& ele : obj.items()) {
            table["rows"].push_back({ele.value()["s"], ele.value()["h"], ele.value()["l"], ele.value()["b"], ele.value()["a"], ele.value()["c"], 
                ele.value()["q"], _D(ele.value()["E"])});
        }
        LogStatus("`" + table.dump() + "`");
    }
    client.close();
}

بائننس کے ویب ساکٹ ٹکر انٹرفیس تک رسائی حاصل کرنے کے لئے:

var ws = null 
function main(){
    var param = {
        "op": "subscribe",
        "args": [{
            "channel": "tickers",
            "instId": "BTC-USDT"
        }]
    }
    // When calling Dial function, specify reconnect=true to set reconnection mode and payload to be the message sent when reconnecting. When the WebSocket connection is disconnected, it will reconnect and send messages automatically.
    ws = Dial("wss://ws.okx.com:8443/ws/v5/public|compress=gzip_raw&mode=recv&reconnect=true&payload="+ JSON.stringify(param))
    if(ws){
        var pingCyc = 1000 * 20
        var lastPingTime = new Date().getTime()
        while(true){
            var nowTime = new Date().getTime()
            var ret = ws.read()
            Log("ret:", ret)
            if(nowTime - lastPingTime > pingCyc){
                var retPing = ws.write("ping")
                lastPingTime = nowTime
                Log("Send : ping", "#FF0000")
            }
            LogStatus("Current time:", _D())
            Sleep(1000)
        }
    }
}              

function onexit() {
    ws.close() 
    Log("exit")
}
import json
import time              

ws = None
def main():
    global ws 
    param = {
        "op": "subscribe",
        "args": [{
            "channel": "tickers",
            "instId": "BTC-USDT"
        }]
    }
    ws = Dial("wss://ws.okx.com:8443/ws/v5/public|compress=gzip_raw&mode=recv&reconnect=true&payload=" + json.dumps(param))
    if ws:
        pingCyc = 1000 * 20
        lastPingTime = time.time() * 1000
        while True:
            nowTime = time.time() * 1000
            ret = ws.read()
            Log("ret:", ret)
            if nowTime - lastPingTime > pingCyc:
                retPing = ws.write("ping")
                lastPingTime = nowTime
                Log("Send: ping", "#FF0000")
            LogStatus("Current time:", _D())
            Sleep(1000)              

def onexit():
    ws.close()
    Log("exit")
auto objWS = Dial("wss://ws.okx.com:8443/ws/v5/public|compress=gzip_raw&mode=recv&reconnect=true");              

void main() {
    json param = R"({
        "op": "subscribe",
        "args": [{
            "channel": "tickers",
            "instId": "BTC-USDT"
        }]
    })"_json;
    
    objWS.write(param.dump());
    if(objWS.Valid) {
        uint64_t pingCyc = 1000 * 20;
        uint64_t lastPingTime = Unix() * 1000;
        while(true) {
            uint64_t nowTime = Unix() * 1000;
            auto ret = objWS.read();
            Log("ret:", ret);
            if(nowTime - lastPingTime > pingCyc) {
                auto retPing = objWS.write("ping");
                lastPingTime = nowTime;
                Log("Send: ping", "#FF0000");
            }
            LogStatus("Current time:", _D());
            Sleep(1000);
        }
    }
}              

void onexit() {
    objWS.close();
    Log("exit");
}

OKX کی ویب ساکٹ ٹکر انٹرفیس تک رسائی:

var ws = null               

function main(){
    var param = {"sub": "market.btcusdt.detail", "id": "id1"}
    ws = Dial("wss://api.huobi.pro/ws|compress=gzip&mode=recv&reconnect=true&payload="+ JSON.stringify(param))
    if(ws){
        while(1){
            var ret = ws.read()
            Log("ret:", ret)
            // Respond to heartbeat packet operations
            try {
                var jsonRet = JSON.parse(ret)
                if(typeof(jsonRet.ping) == "number") {
                    var strPong = JSON.stringify({"pong" : jsonRet.ping})
                    ws.write(strPong)
                    Log("Respond to ping, send pong:", strPong, "#FF0000")
                }
            } catch(e) {
                Log("e.name:", e.name, "e.stack:", e.stack, "e.message:", e.message)
            }
            
            LogStatus("Current time:", _D())
            Sleep(1000)
        }
    }
}              

function onexit() {
    ws.close() 
    Log("Execute the ws.close() function")
}
import json
ws = None              

def main():
    global ws
    param = {"sub" : "market.btcusdt.detail", "id" : "id1"}
    ws = Dial("wss://api.huobi.pro/ws|compress=gzip&mode=recv&reconnect=true&payload=" + json.dumps(param))
    if ws:
        while True:
            ret = ws.read()
            Log("ret:", ret)              
            # Respond to heartbeat packet operations
            try:
                jsonRet = json.loads(ret)
                if "ping" in jsonRet and type(jsonRet["ping"]) == int:
                    strPong = json.dumps({"pong" : jsonRet["ping"]})
                    ws.write(strPong)
                    Log("Respond to ping, send pong:", strPong, "#FF0000")
            except Exception as e:
                Log("e:", e)
                
            LogStatus("Current time:", _D())
            Sleep(1000)
    
def onexit():
    ws.close()
    Log("Execute the ws.close() function")  
using namespace std;
void main() {
    json param = R"({"sub" : "market.btcusdt.detail", "id" : "id1"})"_json;
    auto ws = Dial("wss://api.huobi.pro/ws|compress=gzip&mode=recv&reconnect=true&payload=" + param.dump());
    if(ws.Valid) {
        while(true) {
            auto ret = ws.read();
            Log("ret:", ret);              
            // Respond to heartbeat packet operations
            try 
            {
                auto jsonRet = json::parse(ret);
                if(jsonRet["ping"].is_number()) {
                    json pong = R"({"pong" : 0})"_json;
                    pong["pong"] = jsonRet["ping"];
                    auto strPong = pong.dump();
                    ws.write(strPong);
                    Log("Respond to ping, send pong:", strPong, "#FF0000");
                }
            } catch(exception &e) 
            {
                Log("e:", e.what());
            }
            
            LogStatus("Current time:", _D());
            Sleep(1000);
        }
    }
}              

void onexit() {
    // ws.close();
    Log("Execute the ws.close() function");
}

Huobi کی ویب ساکٹ ٹکر انٹرفیس تک رسائی:

function getLogin(pAccessKey, pSecretKey, pPassphrase) {
    // Signature function for login
    var ts = (new Date().getTime() / 1000).toString()
    var login = {
        "op": "login",
        "args":[{
            "apiKey"    : pAccessKey,
            "passphrase" : pPassphrase,
            "timestamp" : ts,
            "sign" : exchange.HMAC("sha256", "base64", ts + "GET" + "/users/self/verify", pSecretKey)   // exchange.HMAC has been deprecated and is temporarily supported. Please use the latest exchange.Encode function instead.
        }]
    }    
    return login
}                

var client_private = null 
function main() {
    // Because the read function uses a timeout setting, filtering the timeout reports errors that would otherwise be output with redundant errors
    SetErrorFilter("timeout")
    
    // Position channel subscription information
    var posSubscribe = {
        "op": "subscribe",
        "args": [{
            "channel": "positions",
            "instType": "ANY"
        }]
    }                

    var accessKey = "xxx"
    var secretKey = "xxx"
    var passphrase = "xxx"            

    client_private = Dial("wss://ws.okx.com:8443/ws/v5/private")
    client_private.write(JSON.stringify(getLogin(accessKey, secretKey, passphrase)))
    Sleep(3000)  // When logging in, you cannot subscribe to private channels immediately, you need to wait for server response
    client_private.write(JSON.stringify(posSubscribe))
    if (client_private) {
        var lastPingTS = new Date().getTime()
        while (true) {
            var buf = client_private.read(-1)
            if (buf) {
                Log(buf)
            }
            
            // Detect disconnection, reconnect
            if (buf == "" && client_private.write(JSON.stringify(posSubscribe)) == 0) {
                Log("Disconnection detected, close connection, reconnect")
                client_private.close()
                client_private = Dial("wss://ws.okx.com:8443/ws/v5/private")
                client_private.write(JSON.stringify(getLogin(accessKey, secretKey, passphrase)))
                Sleep(3000)
                client_private.write(JSON.stringify(posSubscribe))
            }
            
            // Send heartbeat packets
            var nowPingTS = new Date().getTime()
            if (nowPingTS - lastPingTS > 10 * 1000) {
                client_private.write("ping")
                lastPingTS = nowPingTS
            }            
        }        
    }
}                

function onexit() {    
    var ret = client_private.close()
    Log("Close the connection!", ret)
}
import json
import time
  
def getLogin(pAccessKey, pSecretKey, pPassphrase):
    ts = str(time.time())
    login = {
        "op": "login",
        "args":[{
            "apiKey"    : pAccessKey,
            "passphrase" : pPassphrase,
            "timestamp" : ts,
            "sign" : exchange.HMAC("sha256", "base64", ts + "GET" + "/users/self/verify", pSecretKey)
        }]
    }
    return login                 

client_private = None 
def main():
    global client_private
    SetErrorFilter("timeout")
    
    posSubscribe = {
        "op": "subscribe",
        "args": [{
            "channel": "positions",
            "instType": "ANY"
        }]
    }                  

    accessKey = "xxx"
    secretKey = "xxx"
    passphrase = "xxx"
    
    client_private = Dial("wss://ws.okx.com:8443/ws/v5/private")
    client_private.write(json.dumps(getLogin(accessKey, secretKey, passphrase)))
    Sleep(3000)
    client_private.write(json.dumps(posSubscribe))
    if client_private:
        lastPingTS = time.time() * 1000
        while True:
            buf = client_private.read(-1)
            if buf:
                Log(buf)
            
            if buf == "" and client_private.write(json.dumps(posSubscribe)) == 0:
                Log("Disconnection detected, close connection, reconnect")
                ret = client_private.close()
                client_private = Dial("wss://ws.okx.com:8443/ws/v5/private")
                client_private.write(json.dumps(getLogin(accessKey, secretKey, passphrase)))
                Sleep(3000)
                client_private.write(json.dumps(posSubscribe))
            
            nowPingTS = time.time() * 1000
            if nowPingTS - lastPingTS > 10 * 1000:
                client_private.write("ping")
                lastPingTS = nowPingTS                

def onexit():
    ret = client_private.close()
    Log("Close the connection!", ret)
auto client_private = Dial("wss://ws.okx.com:8443/ws/v5/private");                  

json getLogin(string pAccessKey, string pSecretKey, string pPassphrase) {
    auto ts = std::to_string(Unix());
    json login = R"({
        "op": "login",
        "args": [{
            "apiKey": "",
            "passphrase": "",
            "timestamp": "",
            "sign": ""
        }]
    })"_json;
    login["args"][0]["apiKey"] = pAccessKey;
    login["args"][0]["passphrase"] = pPassphrase;
    login["args"][0]["timestamp"] = ts;
    login["args"][0]["sign"] = exchange.HMAC("sha256", "base64", ts + "GET" + "/users/self/verify", pSecretKey);
    return login;
}                  

void main() {
    SetErrorFilter("timeout");
    json posSubscribe = R"({
        "op": "subscribe",
        "args": [{
            "channel": "positions",
            "instType": "ANY"
        }]
    })"_json;
    
    auto accessKey = "xxx";
    auto secretKey = "xxx";
    auto passphrase = "xxx";
    
    client_private.write(getLogin(accessKey, secretKey, passphrase).dump());
    Sleep(3000);
    client_private.write(posSubscribe.dump());                

    if (client_private.Valid) {
        uint64_t lastPingTS = Unix() * 1000;                  

        while (true) {
            auto buf = client_private.read(-1);
            if (buf != "") {
                Log(buf);
            }
            if (buf == "") {
                if (client_private.write(posSubscribe.dump()) == 0) {
                    Log("Disconnection detected, close connection, reconnect");
                    client_private.close();
                    client_private = Dial("wss://ws.okx.com:8443/ws/v5/private");
                    client_private.write(getLogin(accessKey, secretKey, passphrase).dump());
                    Sleep(3000);
                    client_private.write(posSubscribe.dump());
                }
            }
            
            uint64_t nowPingTS = Unix() * 1000;
            if (nowPingTS - lastPingTS > 10 * 1000) {
                client_private.write("ping");
                lastPingTS = nowPingTS;
            }
        }
    }
}                  

void onexit() {
    client_private.close();
    Log("exit");
}

OKX کی ویب ساکٹ توثیق انٹرفیس تک رسائی حاصل کرنے کے لئے:

var client = null 
function main() {
    // client = Dial("sqlite3://:memory:")   // Using an in-memory database
    client = Dial("sqlite3://test1.db")      // Open/connect to the database file in the docker's directory
    
    // record handle
    var sqlite3Handle = client.fd()
    Log("sqlite3Handle:", sqlite3Handle)
    
    // Querying tables in the database
    var ret = client.exec("SELECT name FROM sqlite_master WHERE type='table'")
    Log(ret)
}

function onexit() {
    Log("Execute client.close()")
    client.close()
}
// Not supported
// Not supported

ایک ڈیٹا بیس سے منسلک ہونے پر ڈائل فنکشن کے ذریعہ واپس آنے والے کنکشن آبجیکٹ میں دو طریقہ کار افعال ہیں جو اس کے لئے منفرد ہیں:

  • exec(sqlString): SQL بیانات کو اسی طرح کے انداز میں چلانے کے لئے استعمال کیا جاتا ہےDBExec() function.
  • fd():fd()فنکشن ایک ہینڈل (مثال کے طور پر، ہینڈل متغیر ہینڈل ہے) واپس آتا ہے جو دوسرے موضوعات کی طرف سے دوبارہ منسلک کرنے کے لئے استعمال کیا جائے گا (یہاں تک کہ اگر ڈائل کی طرف سے پیدا کردہ آبجیکٹ پہلے ہی عملدرآمد کی طرف سے بند کر دیا گیا ہےclose()کنکشن کو بند کرنے کے لئے تقریب) ہینڈل میں منتقل کر کےDial()مثال کے طور پر،Dial(handle)دوبارہ استعمال کنکشن. مندرجہ ذیل ایک ڈائل تقریب سے منسلک ایک مثال ہےsqlite3 database.

تفصیلاتaddressپیرامیٹر، کی طرف سے الگ|عام ایڈریس کے بعد علامت:wss://ws.okx.com:8443/ws/v5/public. اگر ہیں|پیرامیٹر سٹرنگ میں حروف، پھر||علیحدگی کے نشان کے طور پر استعمال کیا جاتا ہے. اس کے بعد حصہ کچھ تقریب پیرامیٹر کی ترتیبات ہیں، اور ہر پیرامیٹر کے ساتھ منسلک ہے&حروف. مثال کے طور پر،ss5پراکسی اور کمپریشن پیرامیٹرز مندرجہ ذیل کے طور پر ایک ساتھ مقرر کیا جا سکتا ہے:Dial("wss://ws.okx.com:8443/ws/v5/public|proxy=socks5://xxx:9999&compress=gzip_raw&mode=recv")

ڈائل فنکشن کے ایڈریس پیرامیٹر کے ذریعہ تعاون یافتہ افعال پیرامیٹر کی تفصیل
ویب ساکٹ پروٹوکول ڈیٹا کمپریشن سے متعلق پیرامیٹرز: compress=parameter value کمپریس کمپریشن کا طریقہ ہے، کمپریس پیرامیٹر کے اختیارات ہیں: gzip_raw، gzip، وغیرہ. اگر gzip طریقہ معیاری gzip نہیں ہے، تو آپ توسیعی طریقہ استعمال کر سکتے ہیں: gzip_raw
ویب ساکٹ پروٹوکول ڈیٹا کمپریشن سے متعلق پیرامیٹرز: mode=parameter value موڈ کمپریشن موڈ ہے، موڈ پیرامیٹر دوہری ہو سکتا ہے، بھیجیں، recv. دوہری دو طرفہ کمپریشن ہے، کمپریسڈ ڈیٹا بھیجیں، کمپریسڈ ڈیٹا وصول کریں. بھیجنے کے کمپریسڈ ڈیٹا بھیجنے کے لئے ہے. recv کمپریسڈ ڈیٹا وصول کرنے کے لئے ہے، مقامی decompression.
ویب ساکٹ پروٹوکول بنیادی آٹو دوبارہ مربوط پیرامیٹرز مقرر کرتا ہے: reconnect=parameter value reconnect reconnect سیٹ کرنا ہے یا نہیں، reconnect=true reconnect کو فعال کرنا ہے۔ جب یہ پیرامیٹر سیٹ نہیں ہوتا ہے تو ڈیفالٹ reconnect نہیں ہے۔
ویب ساکٹ پروٹوکول بنیادی آٹو دوبارہ مربوط متعلقہ پیرامیٹرز مقرر کرتا ہے: وقفہ = پیرامیٹر کی قدر interval دوبارہ کوشش کرنے کا وقفہ ہے، ملی سیکنڈ میں، interval=10000 10 سیکنڈ کا دوبارہ کوشش کرنے کا وقفہ ہے، ڈیفالٹ 1 سیکنڈ ہے جب یہ مقرر نہیں ہے، یعنی interval=1000.
ویب ساکٹ پروٹوکول بنیادی آٹو ری کنکشن سے متعلق پیرامیٹرز مقرر کرتا ہے: پے لوڈ = پیرامیٹر ویلیو پےلوڈ سبسکرپشن پیغام ہے جو ویب ساکٹ کو دوبارہ مربوط کرنے پر بھیجنے کی ضرورت ہے ، مثال کے طور پر: پےلوڈ = اوکوکوک۔
جرابوں سے متعلق پیرامیٹرز5 پراکسی: پراکسی = پیرامیٹر ویلیو پراکسی ایس ایس 5 پراکسی سیٹنگ ہے، پیرامیٹر ویلیو فارمیٹ: socks5://name:pwd@192.168.0.1:1080، نام ایس ایس 5 سرور صارف نام ہے، PWD ایس ایس 5 سرور لاگ ان پاس ورڈ ہے، 1080 ایس ایس 5 سروس پورٹ ہے.

کےDial()فنکشن صرف لائیو ٹریڈنگ کے لیے معاون ہے۔ ڈائل فنکشن کا استعمال کرتے ہوئے ڈیٹا بیس سے رابطہ قائم کرتے وقت ، کنکشن سٹرنگ ہر ڈیٹا بیس کے لئے گو زبان ڈرائیور پروجیکٹ کے حوالے سے لکھی جاتی ہے۔

ڈیٹا بیس کی حمایت ڈرائیونگ پروجیکٹس کنکشن سٹرنگ تبصرے
سکلائٹ3 github.com/mattn/go-sqlite3 sqlite3://file:test.db؟cache=shared&mode=memory کےsqlite3://سابقہ اس بات کی نشاندہی کرتا ہے کہ ایک sqlite3 ڈیٹا بیس استعمال کیا جا رہا ہے، مثال کال:Dial("sqlite3://test1.db")
mysql github.com/go-sql-driver/mysql mysql://username:yourpassword@tcp(localhost:3306) /آپ کا ڈیٹا بیس؟charset=utf8mb4
پودوں کے بعد github.com/lib/pq postgres://user=postgres dbname=yourdatabase sslmode=disable password=yourpassword میزبان=localhost پورٹ=5432
کلک ہاؤس github.com/ClickHouse/clickhouse-go کلک ہاؤس://tcp://host:9000؟username=username&password=yourpassword&database=youdatabase

براہ مہربانی نوٹ کریں کہ جبpayloadمواد میں مقررaddressپیرامیٹر حروف پر مشتمل ہے=یا دیگر خصوصی حروف، یہ تجزیہ پر اثر انداز کر سکتے ہیںaddressپیرامیٹرDialتقریب، جیسے مندرجہ ذیل مثال.

backPack Exchange websocket نجی انٹرفیس کال مثال:

var client = null

function main() {
    // Base64-encoded public key of the key pair, i.e. the access key configured on FMZ
    var base64ApiKey = "xxx"

    var ts = String(new Date().getTime())
    var data = "instruction=subscribe&timestamp=" + ts + "&window=5000"

    // Since signEd25519 returns a base64 encoding, it contains the character "="
    var signature = signEd25519(data)
    
    // The payload may contain the character "=" after being encoded by JSON
    payload = {
        "method": "SUBSCRIBE",
        "params": ["account.orderUpdate"],
        "signature": [base64ApiKey, signature, ts, "5000"]
    }

    client = Dial("wss://ws.backpack.exchange")
    client.write(JSON.stringify(payload))
    if (!client) {
        Log("Connection failed, program exited")
        return
    }
    
    while (true) {
        var buf = client.read()      
        Log(buf)
    }    
}

function onexit() {
    client.close()
}

function signEd25519(data) {
    return exchange.Encode("ed25519.seed", "raw", "base64", data, "base64", "{{secretkey}}")
}

مندرجہ ذیل کال کوڈ میں ٹھیک کام کرتا ہے:

client = Dial("wss://ws.backpack.exchange")
client.write(JSON.stringify(payload))

اگر آپ اسے براہ راست لکھیںpayload، یہ مناسب طریقے سے کام نہیں کرے گا، مثال کے طور پر:

client = Dial("wss://ws.backpack.exchange|payload=" + JSON.stringify(payload))

فی الحال، صرف جاوا اسکرپٹ کے استعمال کی حمایت کرتا ہےmqtt, nats, amqp، اورkafkaڈائل فنکشن میں مواصلاتی پروٹوکول۔ چار پروٹوکولوں کے استعمال کو ظاہر کرنے کے لئے جاوا اسکرپٹ زبان کی حکمت عملی کا کوڈ بطور مثال استعمال کیا جاتا ہے۔mqtt, nats, amqp، اورkafka:

// We need to configure and deploy proxy servers for each protocol first.
// For the sake of demonstration, the subscription (read operation) and publishing (write operation) of the topic test_topic are all performed in the current strategy.
var arrConn = []
var arrName = []

function main() {
    LogReset(1)
    conn_nats = Dial("nats://admin@127.0.0.1:4222?topic=test_topic")
    conn_mqtt = Dial("mqtt://127.0.0.1:1883?topic=test_topic")
    conn_amqp = Dial("amqp://q:admin@127.0.0.1:5672/?queue=test_Queue")
    conn_kafka = Dial("kafka://localhost:9092/test_topic")
    arrConn = [conn_nats, conn_amqp, conn_mqtt, conn_kafka]
    arrName = ["nats", "amqp", "mqtt", "kafka"]

    while (true) {
        for (var i in arrConn) {
            var conn = arrConn[i]
            var name = arrName[i]

            // Write data
            conn.write(name + ", time: " + _D() + ", test msg.")
            
            // Read data
            var readMsg = conn.read(1000)
            Log(name + " readMsg: ", readMsg, "#FF0000")
        }

        Sleep(1000)
    }
}

function onexit() {
    for (var i in arrConn) {
        arrConn[i].close()
        Log("close", arrName[i], "connect")
    }
}

تفصیلی دستاویزات کا حوالہ:ایف ایم زیڈ کی تلاش: لائیو ٹریڈنگ کی حکمت عملیوں کے مابین مواصلاتی پروٹوکول کی مشق

میٹا حاصل کریں HTTPQuery