Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Tcl) WebSocket Binance Trade Stream (subscribe and receive updates)Subscribe to a binance trade stream and receive updates. For more information, see https://binance-docs.github.io/apidocs/spot/en/#live-subscribing-unsubscribing-to-streams
load ./chilkat.dll # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. set ws [new_CkWebSocket] # For brevity, this example does not check for errors when etablishing the WebSocket connection. # See Establish WebSocket Connection for more complete sample code for making the connection. set rest [new_CkRest] # Connect to wss://stream.binance.com:9443 set success [CkRest_Connect $rest "stream.binance.com" 9443 1 0] if {$success == 0} then { puts [CkRest_lastErrorText $rest] delete_CkWebSocket $ws delete_CkRest $rest exit } set success [CkWebSocket_UseConnection $ws $rest] if {$success == 0} then { puts [CkWebSocket_lastErrorText $ws] delete_CkWebSocket $ws delete_CkRest $rest exit } CkWebSocket_AddClientHeaders $ws # Raw streams are accessed at /ws/<streamName> set responseBody [CkRest_fullRequestNoBody $rest "GET" "/ws/btcusdt"] if {[CkRest_get_LastMethodSuccess $rest] == 0} then { puts [CkRest_lastErrorText $rest] delete_CkWebSocket $ws delete_CkRest $rest exit } set success [CkWebSocket_ValidateServerHandshake $ws] if {$success != 1} then { puts [CkWebSocket_lastErrorText $ws] puts "$responseBody" puts [CkRest_responseHeader $rest] delete_CkWebSocket $ws delete_CkRest $rest exit } puts "$responseBody" puts [CkRest_responseHeader $rest] # POST JSON to subscribe to a stream # { # "method": "SUBSCRIBE", # "params": # [ # "btcusdt@aggTrade", # "btcusdt@depth" # ], # "id": 1 # } set json [new_CkJsonObject] CkJsonObject_UpdateString $json "method" "SUBSCRIBE" CkJsonObject_UpdateString $json "params[0]" "btcusdt@aggTrade" CkJsonObject_UpdateString $json "params[1]" "btcusdt@depth" CkJsonObject_UpdateInt $json "id" 1 # Send a full message in a single frame set finalFrame 1 set success [CkWebSocket_SendFrame $ws [CkJsonObject_emit $json] $finalFrame] if {$success != 1} then { puts [CkWebSocket_lastErrorText $ws] delete_CkWebSocket $ws delete_CkRest $rest delete_CkJsonObject $json exit } set jsonTradeData [new_CkJsonObject] CkJsonObject_put_EmitCompact $jsonTradeData 0 # Begin reading the trade stream response. # We'll just read the 1st 10 updates and then exit.. set receivedFinalFrame 0 set numTradesReceived 0 while {$numTradesReceived < 5} { set success [CkWebSocket_ReadFrame $ws] if {$success != 1} then { puts "Failed to receive a frame" puts "ReadFrame fail reason = [CkWebSocket_get_ReadFrameFailReason $ws]" puts [CkWebSocket_lastErrorText $ws] delete_CkWebSocket $ws delete_CkRest $rest delete_CkJsonObject $json delete_CkJsonObject $jsonTradeData exit } # The responses we desire are in Text frames, where the opcode = 1. if {[CkWebSocket_get_FrameOpcodeInt $ws] == 1} then { set receivedJson [CkWebSocket_getFrameData $ws] CkJsonObject_Load $jsonTradeData $receivedJson puts [CkJsonObject_emit $jsonTradeData] set numTradesReceived [expr $numTradesReceived + 1] } } # Close the websocket connection. set success [CkWebSocket_SendClose $ws 1 1000 "Closing this websocket."] if {$success != 1} then { puts [CkWebSocket_lastErrorText $ws] delete_CkWebSocket $ws delete_CkRest $rest delete_CkJsonObject $json delete_CkJsonObject $jsonTradeData exit } # Read the Close response. set success [CkWebSocket_ReadFrame $ws] if {$success != 1} then { puts "ReadFrame fail reason = [CkWebSocket_get_ReadFrameFailReason $ws]" puts [CkWebSocket_lastErrorText $ws] delete_CkWebSocket $ws delete_CkRest $rest delete_CkJsonObject $json delete_CkJsonObject $jsonTradeData exit } puts "Success." # The output of the above code is shown here: delete_CkWebSocket $ws delete_CkRest $rest delete_CkJsonObject $json delete_CkJsonObject $jsonTradeData |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.