Skip to content
NetMQ F# Binding
F#
Branch: master
Clone or download
Latest commit ba327a0 May 8, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src supporting peer socket type Nov 4, 2017
.gitignore Create .gitignore Aug 27, 2017
LICENSE Create LICENSE Oct 26, 2017
README.md Update README.md May 8, 2018

README.md

FsNetMQ

Example

use router = Socket.router ()
router.bind socket "tcp://*:6566"

use dealer = Socket.dealer ()
Socket.connect socket "tcp://127.0.0.1:6566"

Frame.send dealer "Hello"B

let frame,more = Frame.recv router

Poller

Poller is using IObservable, so when ever you add a socket to the poller you get an observable which you can subscribe to be notified of new messages.

use poller = Poller.create ()
use dealer = Socket.dealer ()
use subscriber = Socker.sub ()

// Connecting and subscribing...

let dealerObservable = 
  Poller.addSocket poller dealer
  |> Observable.map Frame.recv
  
let subObservable = 
  Poller.addSocket poller subscriber
  |> Observable.map Frame.recv

use observer = 
  Observable.merge dealerObservable subObservable  
  |> Observable.subscribe (fun msg -> printfn "%A" msg)
  
Poller.run poller

Actor

Actor is a thread with socket attached to it, so you are able to send it messages and request cancellation. Together with Poller it is a powerful concept.

// Actor is disposable, so whenever you call dispose on the actor the end message will be sent the thread will exit
let actor = 
  Actor.create (fun shim -> 
    use poller = Poller.create ()
    
    // Registering for the end message which will cancel the actor
    use emObserver = Poller.registerEndMessage poller shim

    // Creating sockets and adding them to the poller
    ...
   
    // Signalling that the actor is ready, this will let the Actor.create function to exit
    Actor.signal shim

    Poller.run poller
 
You can’t perform that action at this time.