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) Binary.com Tick StreamTick Stream Request -- Initiate a continuous stream of spot price updates for a given symbol.
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 ws.binaryws.com set success [CkRest_Connect $rest "ws.binaryws.com" 443 1 0] CkWebSocket_UseConnection $ws $rest CkWebSocket_AddClientHeaders $ws # My app_id is 12332. You'll wnat to use your own... set responseBody [CkRest_fullRequestNoBody $rest "GET" "/websockets/v3?app_id=12332"] 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 } # Build and send the following message: # { # "ticks": "R_50", # "subscribe": 1 # } set json [new_CkJsonObject] CkJsonObject_AppendString $json "ticks" "R_50" CkJsonObject_AppendInt $json "subscribe" 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 jsonTickData [new_CkJsonObject] CkJsonObject_put_EmitCompact $jsonTickData 0 # Begin reading the tick stream response. # We'll just read the 1st 10 updates and then exit.. set receivedFinalFrame 0 set numTicksReceived 0 while {$numTicksReceived < 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 $jsonTickData 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 $jsonTickData $receivedJson puts [CkJsonObject_emit $jsonTickData] set numTicksReceived [expr $numTicksReceived + 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 $jsonTickData 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 $jsonTickData exit } puts "Success." # The output of the above code is shown here: # { # "echo_req": { # "subscribe": 1, # "ticks": "R_50" # }, # "msg_type": "tick", # "tick": { # "ask": "373.8725", # "bid": "373.8325", # "epoch": "1517437456", # "id": "2d3dedf1-45e2-66a5-d0d3-72bd7f0a6ea9", # "quote": "373.8525", # "symbol": "R_50" # } # } # # { # "echo_req": { # "subscribe": 1, # "ticks": "R_50" # }, # "msg_type": "tick", # "tick": { # "ask": "373.7952", # "bid": "373.7552", # "epoch": "1517437458", # "id": "2d3dedf1-45e2-66a5-d0d3-72bd7f0a6ea9", # "quote": "373.7752", # "symbol": "R_50" # } # } # # { # "echo_req": { # "subscribe": 1, # "ticks": "R_50" # }, # "msg_type": "tick", # "tick": { # "ask": "373.8638", # "bid": "373.8238", # "epoch": "1517437460", # "id": "2d3dedf1-45e2-66a5-d0d3-72bd7f0a6ea9", # "quote": "373.8438", # "symbol": "R_50" # } # } # # { # "echo_req": { # "subscribe": 1, # "ticks": "R_50" # }, # "msg_type": "tick", # "tick": { # "ask": "373.7636", # "bid": "373.7236", # "epoch": "1517437462", # "id": "2d3dedf1-45e2-66a5-d0d3-72bd7f0a6ea9", # "quote": "373.7436", # "symbol": "R_50" # } # } # # { # "echo_req": { # "subscribe": 1, # "ticks": "R_50" # }, # "msg_type": "tick", # "tick": { # "ask": "373.6870", # "bid": "373.6470", # "epoch": "1517437464", # "id": "2d3dedf1-45e2-66a5-d0d3-72bd7f0a6ea9", # "quote": "373.6670", # "symbol": "R_50" # } # } # # Success. delete_CkWebSocket $ws delete_CkRest $rest delete_CkJsonObject $json delete_CkJsonObject $jsonTickData |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.