public void MultipleSubscribers() { using (var pub = new XPublisherSocket()) using (var sub = new XSubscriberSocket()) using (var sub2 = new XSubscriberSocket()) { var port = pub.BindRandomPort("tcp://127.0.0.1"); sub.Connect("tcp://127.0.0.1:" + port); sub.SendFrame(new byte[] { 1, (byte)'A' }); sub.SendFrame(new byte[] { 1, (byte)'A', (byte)'B' }); sub.SendFrame(new byte[] { 1, (byte)'B' }); sub.SendFrame(new byte[] { 1, (byte)'C' }); sub2.Connect("tcp://127.0.0.1:" + port); sub2.SendFrame(new byte[] { 1, (byte)'A' }); sub2.SendFrame(new byte[] { 1, (byte)'A', (byte)'B' }); sub2.SendFrame(new byte[] { 1, (byte)'C' }); Thread.Sleep(500); pub.SendMoreFrame("AB"); pub.SendFrame("1"); Assert.AreEqual("AB", sub.ReceiveMultipartStrings().First(), "First subscriber is expected to receive the message"); Assert.AreEqual("AB", sub2.ReceiveMultipartStrings().First(), "Second subscriber is expected to receive the message"); } }