Sample code for 30+ languages & platforms
PowerShell

Read Bitfinex WebSocket Ticker Channel

See more WebSocket Examples

Subscribes to the public Bitfinex websocket ticker channel and receives ticker updates.

Chilkat PowerShell Downloads

PowerShell
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"

$success = $false

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

$ws = New-Object Chilkat.WebSocket

# 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.

$rest = New-Object Chilkat.Rest

# Connect to api.bitfinex.com
$success = $rest.Connect("api.bitfinex.com",443,$true,$false)
$ws.UseConnection($rest)
$ws.AddClientHeaders()

$responseBody = $rest.FullRequestNoBody("GET","/ws")
$success = $ws.ValidateServerHandshake()
if ($success -ne $true) {
    $($ws.LastErrorText)
    $($responseBody)
    $($rest.ResponseHeader)
    exit
}

# After connecting, the bitfinex websocket server will send
# an info message that contains the actual version of the websocket stream.
# Receive that message..
$success = $ws.ReadFrame()
if ($success -ne $true) {
    $("Failed to receive a frame")
    $("ReadFrame fail reason = " + $ws.ReadFrameFailReason)
    $($ws.LastErrorText)
    exit
}

# We should get this:
# {"event":"info","version":1.1,"platform":{"status":1}}
$($ws.GetFrameData())

# Subscribe to the public ticker feed.
# See https://docs.bitfinex.com/docs for more information.
$json = New-Object Chilkat.JsonObject
$json.AppendString("event","subscribe")
$json.AppendString("channel","ticker")
$json.AppendString("pair","BTCUSD")

$finalFrame = $true
$success = $ws.SendFrame($json.Emit(),$finalFrame)

# Read the response.
$success = $ws.ReadFrame()
if ($success -ne $true) {
    $("Failed to receive a frame")
    $("ReadFrame fail reason = " + $ws.ReadFrameFailReason)
    $($ws.LastErrorText)
    exit
}

# Examine the response
# We should get this:
# {"event":"subscribed","channel":"ticker","chanId":2751,"pair":"BTCUSD"}
$($ws.GetFrameData())

# Begin reading the ticker feed.
# We'll just read the 1st 5 updates and then exit..
$receivedFinalFrame = $false
$numUpdatesReceived = 0
while ($numUpdatesReceived -lt 5) {

    $success = $ws.ReadFrame()
    if ($success -ne $true) {
        $("Failed to receive a frame")
        $("ReadFrame fail reason = " + $ws.ReadFrameFailReason)
        $($ws.LastErrorText)
        exit
    }

    # The responses we desire are in Text frames, where the opcode = 1.
    if ($ws.FrameOpcodeInt -eq 1) {
        $receivedText = $ws.GetFrameData()
        $($receivedText)
        # Should receive a line of text such as this:
        # [2751,7349,36.34269559,7349.1,41.01777063,-116.2,-0.0156,7349.1,22188.26055319,7560,7270.5]
        $numUpdatesReceived = $numUpdatesReceived + 1
    }

}

# Close the websocket connection.
$success = $ws.SendClose($true,1000,"Closing this websocket.")
if ($success -ne $true) {
    $($ws.LastErrorText)
    exit
}

# Read the Close response.
$success = $ws.ReadFrame()
if ($success -ne $true) {
    $("ReadFrame fail reason = " + $ws.ReadFrameFailReason)
    $($ws.LastErrorText)
    exit
}

$("Success.")