static void Main(string[] args) { using (NetMQContext context = NetMQContext.Create()) { using (WSRouter router = context.CreateWSRouter()) using (WSPublisher publisher = context.CreateWSPublisher()) { router.Bind("ws://localhost:80"); publisher.Bind("ws://localhost:81"); router.ReceiveReady += (sender, eventArgs) => { string identity = router.ReceiveString(); string message = router.ReceiveString(); router.SendMore(identity).Send("OK"); publisher.SendMore("chat").Send(message); }; Poller poller = new Poller(); poller.AddSocket(router); // we must add the publisher to the poller although we are not registering to any event. // The internal stream socket handle connections and subscriptions and use the events internally poller.AddSocket(publisher); poller.Start(); } } }
private void InitMq() { _context = NetMQContext.Create(); _eventPublisher = _context.CreateWSPublisher(); _eventPublisher.Bind(_endpoint); }
public void PubSub() { using (NetMQContext context = NetMQContext.Create()) { using (WebSocket4Net.WebSocket webSocket = new WebSocket("ws://localhost:82", "WSNetMQ")) { using (WSPublisher publisher = context.CreateWSPublisher()) { publisher.Bind("ws://localhost:82"); ManualResetEvent manualResetEvent = new ManualResetEvent(false); webSocket.Opened += (sender, args) => manualResetEvent.Set(); webSocket.Open(); webSocket.Error += (sender, args) => Console.WriteLine("Error"); manualResetEvent.WaitOne(); Assert.AreEqual(webSocket.State, WebSocketState.Open); byte[] subscription = new byte[3]; subscription[0] = 0; subscription[1] = 1; subscription[2] = (byte)'H'; // should exit the router thread webSocket.Send(subscription, 0, subscription.Length); // wait for the subscription to arrive Thread.Sleep(1000); byte[] receivedMessage = null; manualResetEvent.Reset(); webSocket.DataReceived += (sender, args) => { receivedMessage = args.Data; manualResetEvent.Set(); }; publisher.Send("Hello"); Assert.IsTrue(manualResetEvent.WaitOne(1000)); Assert.AreEqual(0, receivedMessage[0]); Assert.AreEqual('H', receivedMessage[1]); Assert.AreEqual('e', receivedMessage[2]); Assert.AreEqual('l', receivedMessage[3]); Assert.AreEqual('l', receivedMessage[4]); Assert.AreEqual('o', receivedMessage[5]); } } } }