Skip to content
This repository has been archived by the owner on Jan 20, 2020. It is now read-only.

mendrugory/signalrex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Signalrex

Signalrex is a library writen in Elixir which will help you to interact with servers which implements SignalR. You can find more information in their web.

Signalrex only supports WebSockets as transport protocol using Enchufeweb.

Installation

If available in Hex, the package can be installed by adding signalrex to your list of dependencies in mix.exs:

def deps do
  [
    {:signalrex, "~> 0.1.0"}
  ]
end

Implementation

Define your Module, use Signalrex and implement the functions get_initial_message/0 (The first message that will be sent to the server) and process_message/2 (The function that will be called when a message arrived from the server)

defmodule Test do
  use Signalrex

  def get_initial_message() do
    %{"S" => 0, "M" => [], "C" => ""}
  end

  def process_message(data, state) do
    IO.inspect data
    {:ok, state}
  end
end

Start

Signalrex needs some mandatory arguments to work:

  • url: A string with the signalR server url.
  • negotiate_headers: A map with the additional headers of the negotiate request (it could be empty).
  • negotiate_query_params: A keyword list with the additional parameters of the negotiate request (it could be empty).
  • ws_opts: A map with the options for the websocket.
  • connect_query_params: A keyword list with the additional parameters of the websocket connection request.
  • base_ws_url: A string with the websocket server url.
  • start_headers: A map with the additional headers of the start request (it could be empty).
  • start_query_params: A keyword list with the additional parameters of the start request (it could be empty).

Example

args = %{
  url: "http://9.5.6.7:5555/signalr",
  negotiate_headers: %{},
  negotiate_query_params: ["my_auth": "asdfasdf", "connectionData": "[{\"id\":\"my_data\"}]"],
  ws_opts: %{conn_mode: :once},
  connect_query_params: ["my_auth": "asdfasdf", "connectionData": "[{\"id\":\"my_data\"}]"],
  base_ws_url: "ws://9.5.6.7:5555/signalr",
  start_headers: %{},
  start_query_params: ["my_auth": "asdfasdf", "connectionData": "[{\"id\":\"my_data\"}]"]
  }

After having your arguments, you only have to start your process:

{:ok, signalrex} = Test.start_link(args, [])

Sending data

Test.send(_your_signalrex_process_, _your_message_)

Docs

$ mix docs

Tests

Looking for a public SignalR server in order to publish test against it.

Releases

No releases published

Packages

No packages published

Languages