View on GitHub


Test Coverage
[![Build Status](](
[![Go Report Card](](

# Project depricated

Unfortunately, I am no longer able to provide support for this project. Please see for some forks that have been created.

# Overview

This is my personal attempt at implementating the client side of the WebSocket
portion of the SignalR protocol. I use it for various virtual currency trading
platforms that use SignalR.

It supports CloudFlare-protected sites by default.

## Examples

Simple example:

package main

import (


func main() {
    // Prepare a SignalR client.
    c := signalr.New(

    // Define message and error handlers.
    msgHandler := func(msg signalr.Message) { log.Println(msg) }
    panicIfErr := func(err error) {
        if err != nil {

    // Start the connection.
    err := c.Run(msgHandler, panicIfErr)

    // Wait indefinitely.
    select {}

Generic usage:

- [Basic usage](
- [Complex usage](

Cryptocurrency examples:

- [Bittrex](
- [Cryptopia](

Proxy examples:

- [No authentication](
- [With authentication](

# Documentation

- GoDoc:
- SignalR specification:
- Excellent technical deep dive of the protocol:

# Contribute

If anything is unclear or could be improved, please open an issue or submit a
pull request. Thanks!