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
letframe,more = Frame.recv routerPoller 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...letdealerObservable= Poller.addSocket poller dealer
|> Observable.map Frame.recv
letsubObservable= Poller.addSocket poller subscriber
|> Observable.map Frame.recv
use observer = Observable.merge dealerObservable subObservable |> Observable.subscribe (fun msg -> printfn "%A" msg)
Poller.run pollerActor 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 exitletactor= Actor.create (fun shim ->use poller = Poller.create ()// Registering for the end message which will cancel the actoruse 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