예제 #1
0
    private void ReceiveInformation()
    {
        WWW    www   = new WWW(URL_RECV);
        string topic = room_id;

        using (var subSocket = new NetMQ.Sockets.SubscriberSocket())
        {
            subSocket.Options.ReceiveHighWatermark = 1000;
            subSocket.Connect(URL_RECV);
            subSocket.Subscribe(topic);
            //Console.WriteLine("Subscriber socket connecting...");

            while (true)
            {
                var messageTopicReceived = subSocket.ReceiveFrameString();
                var messageReceived      = subSocket.ReceiveFrameString();
                //Debug.Log(messageReceived);
                PlayerJson[] players = JsonHelper.FromJson <PlayerJson>(messageReceived);

                foreach (var playerData in players)
                {
                    bool found = false;
                    for (int i = 0; i < submarines.Count && !found; ++i)
                    {
                        if (submarines[i].GetId() == playerData.id)
                        {
                            submarines[i].SetPositionX(playerData.pos_x);
                            submarines[i].SetPositionY(playerData.pos_y);
                            found = true;
                        }
                    }
                    for (int i = 0; i < divers.Count && !found; ++i)
                    {
                        if (divers[i].GetId() == playerData.id)
                        {
                            divers[i].SetPositionX(playerData.pos_x);
                            divers[i].SetPositionY(playerData.pos_y);
                            found = true;
                        }
                    }
                }
            }
        }
    }
예제 #2
0
파일: PgmTests.cs 프로젝트: somdoron/netmq
        public void ConnectBothSockets()
        {
            using (var pub = new PublisherSocket())
            using (var sub = new SubscriberSocket())
            {
                pub.Connect("pgm://224.0.0.1:5555");
                sub.Connect("pgm://224.0.0.1:5555");

                sub.Subscribe("");

                pub.SendFrame("Hi");

                bool more;
                Assert.AreEqual("Hi", sub.ReceiveFrameString(out more));
                Assert.IsFalse(more);
            }
        }
예제 #3
0
파일: PgmTests.cs 프로젝트: somdoron/netmq
        public void UseInterface()
        {
            #if NETCOREAPP1_0
            var hostEntry = Dns.GetHostEntryAsync(Dns.GetHostName()).Result;
            #else
            var hostEntry = Dns.GetHostEntry(Dns.GetHostName());
            #endif

            string ip = hostEntry.AddressList
                .Where(addr => addr.AddressFamily == AddressFamily.InterNetwork)
                .Select(addr => addr.ToString())
                .FirstOrDefault();

            using (var pub = new PublisherSocket())
            using (var sub = new SubscriberSocket())
            {
                pub.Connect($"pgm://{ip};224.0.0.1:5555");
                sub.Bind($"pgm://{ip};224.0.0.1:5555");

                sub.Subscribe("");

                pub.SendFrame("Hi");

                bool more;
                Assert.AreEqual("Hi", sub.ReceiveFrameString(out more));
                Assert.IsFalse(more);
            }
        }
예제 #4
0
파일: PgmTests.cs 프로젝트: somdoron/netmq
        public void SetPgmSettings()
        {
            const int MegaBit = 1024;
            const int MegaByte = 1024;

            using (var pub = new PublisherSocket())
            using (var sub = new SubscriberSocket())
            {
                pub.Options.MulticastHops = 2;
                pub.Options.MulticastRate = 40*MegaBit; // 40 megabit
                pub.Options.MulticastRecoveryInterval = TimeSpan.FromMinutes(10);
                pub.Options.SendBuffer = MegaByte*10; // 10 megabyte

                pub.Connect("pgm://224.0.0.1:5555");

                sub.Options.ReceiveBuffer = MegaByte*10;
                sub.Bind("pgm://224.0.0.1:5555");

                sub.Subscribe("");

                pub.SendFrame("Hi");

                bool more;
                Assert.AreEqual("Hi", sub.ReceiveFrameString(out more));
                Assert.IsFalse(more);

                Assert.AreEqual(2, pub.Options.MulticastHops);
                Assert.AreEqual(40*MegaBit, pub.Options.MulticastRate);
                Assert.AreEqual(TimeSpan.FromMinutes(10), pub.Options.MulticastRecoveryInterval);
                Assert.AreEqual(MegaByte*10, pub.Options.SendBuffer);
                Assert.AreEqual(MegaByte*10, sub.Options.ReceiveBuffer);
            }
        }
예제 #5
0
        public void WelcomeMessage()
        {
            using (var pub = new XPublisherSocket())
            using (var sub = new SubscriberSocket())
            {
                pub.Bind("inproc://welcome");
                pub.SetWelcomeMessage("W");

                sub.Subscribe("W");
                sub.Connect("inproc://welcome");

                var subscription = pub.ReceiveFrameBytes();

                Assert.AreEqual(subscription[1], (byte)'W');

                Assert.AreEqual("W", sub.ReceiveFrameString());
            }
        }