コード例 #1
0
ファイル: Program.cs プロジェクト: ewin66/Lxsh.Project
        public static void RunServer()
        {
            using (NetMQSocket serverSocket = new ResponseSocket())
            {
                serverSocket.Bind("tcp://127.0.0.1:5555");
                while (true)
                {
                    string message1 = serverSocket.ReceiveFrameString();

                    Console.WriteLine("Receive message :\r\n{0}\r\n", message1);

                    string[] msg     = message1.Split(':');
                    string   message = msg[1];


                    #region 根据接收到的消息,返回不同的信息
                    if (message == "Hello")
                    {
                        serverSocket.SendFrame("World");
                    }
                    else
                    {
                        serverSocket.SendFrame(message);
                    }
                    #endregion

                    if (message == "exit")
                    {
                        break;
                    }
                }
            }
        }
コード例 #2
0
 public void RequestReply()
 {
     ThreadPool.QueueUserWorkItem(state =>
     {
         var server = new ResponseSocket();
         server.Bind("tcp://*:5555");
         while (!_stopLoops)
         {
             try
             {
                 var receiveFrame = server.ReceiveFrameBytes();
                 var request      = Serializer.Deserialize <Request>(new MemoryStream(receiveFrame));
                 var response     = OnRequest(request);
                 using (var responseStream = new MemoryStream())
                 {
                     Serializer.Serialize(responseStream, response);
                     server.SendFrame(responseStream.ToArray());
                 }
             }
             catch (Exception e)
             {
                 Console.WriteLine(e);
             }
         }
     });
 }
コード例 #3
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            using var server = new ResponseSocket("tcp://*:8050");


            while (!stoppingToken.IsCancellationRequested)
            {
                string serverMessage = "";
                await Task.Run(() =>
                {
                    try
                    {
                        serverMessage = server.ReceiveFrameString();
                        Console.WriteLine($"Client Sent: {serverMessage} DateTime: {DateTime.Now}");
                        Console.WriteLine("Sending reply to the client ...");

                        const string msg1 = "Hi", msg2 = "How are you ?";

                        var response = new NetMQMessage();
                        response.Append(msg1);
                        response.Append(msg2);

                        server.SendMultipartMessage(response);
                        Console.WriteLine($"Response has been sent => 1: {msg1}, 2: {msg2}");

                        _hubContext.Clients.All.SendAsync("ReceiveNotification", serverMessage);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"Error: {ex.Message} DateTime: {DateTime.Now}");
                    }
                });
            }
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: cgath/calibrator
        static void Main(string[] args)
        {
            string connectionString = args[0];

            using (var send = new PushSocket(">tcp://127.0.0.1:9999"))
                using (var receive = new ResponseSocket(connectionString))
                {
                    while (true)
                    {
                        // Block for request
                        var message = receive.ReceiveFrameString();
                        var msgId   = Guid.NewGuid().ToString();

                        // Acknowledge
                        receive.SendFrame("200, ACK");

                        // Do Work ...
                        Thread.Sleep(2000);

                        // Send response
                        send.SendFrame(string.Format("Handler {0} completed task {1}",
                                                     connectionString, msgId));

                        // Exit handler
                        break;
                    }
                }
        }
コード例 #5
0
        private void EventLoop()
        {
            var addr = context.ConnectionInfo.HeartbeatZmqAddress;

            this.logger.LogDebug("Starting heartbeat server at {Address}.", addr);
            socket = new ResponseSocket();
            socket.Bind(addr);

            while (alive)
            {
                // We use the Bytes receiver so that we can ping back data
                // unmodified, without worrying about encodings.
                try
                {
                    var data = socket.ReceiveFrameBytes();
                    logger.LogDebug($"Got heartbeat message of length {data.Length}.");
                    if (!socket.TrySendFrame(data))
                    {
                        logger.LogError("Error sending heartbeat message back to client.");
                    }
                }
                catch (ThreadInterruptedException)
                {
                    continue;
                }
                catch (Exception ex)
                {
                    logger.LogCritical(ex, "Unhandled exception in heartbeat loop.");
                }
            }
        }
コード例 #6
0
            public void RunPipeline(PairSocket shim)
            {
                publisherSocket = context.CreatePublisherSocket();
                publisherSocket.Bind("tcp://*:" + StreamingProtocol.Port);

                snapshotSocket = context.CreateResponseSocket();
                snapshotSocket.Bind("tcp://*:" + SnapshotProtocol.Port);
                snapshotSocket.ReceiveReady += OnSnapshotReady;

                shim.ReceiveReady += OnShimReady;

                heartbeatTimer          = new NetMQTimer(StreamingProtocol.HeartbeatInterval);
                heartbeatTimer.Elapsed += OnHeartbeatTimerElapsed;

                shim.SignalOK();

                poller = new Poller();
                poller.AddSocket(shim);
                poller.AddSocket(snapshotSocket);
                poller.AddTimer(heartbeatTimer);
                poller.Start();

                publisherSocket.Dispose();
                snapshotSocket.Dispose();
            }
コード例 #7
0
ファイル: Program.cs プロジェクト: jamesh2075/Accuity
        static void Main(string[] args)
        {
            int port = 5555;

            if (args.Length > 1)
            {
                int.TryParse(args[0], out port);
            }

            Console.WriteLine($"Starting NetMQ at TCP port {port}.");
            Console.WriteLine("Press CTRL+C to stop the service.");

            try
            {
                using (var server = new ResponseSocket())
                {
                    server.Bind($"tcp://*:{port}");
                    while (true)
                    {
                        var message = server.ReceiveFrameString();
                        Console.WriteLine(message);
                        Thread.Sleep(100);
                        server.SendFrame("***Processed***");
                    }
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                Console.WriteLine("An unexpected error occurred.");
            }
        }
コード例 #8
0
        public void SendAndReceive()
        {
            using (var front = new RouterSocket())
                using (var back = new DealerSocket())
                {
                    front.Bind("inproc://frontend");
                    back.Bind("inproc://backend");

                    var proxy = new Proxy(front, back);
                    Task.Factory.StartNew(proxy.Start);

                    using (var client = new RequestSocket())
                        using (var server = new ResponseSocket())
                        {
                            client.Connect("inproc://frontend");
                            server.Connect("inproc://backend");

                            client.SendFrame("hello");
                            Assert.AreEqual("hello", server.ReceiveFrameString());
                            server.SendFrame("reply");
                            Assert.AreEqual("reply", client.ReceiveFrameString());
                        }

                    proxy.Stop();
                }
        }
コード例 #9
0
        static void Main(string[] args)
        {
            using (var server = new ResponseSocket())
            {
                server.Bind("tcp://*:5555");
                Console.WriteLine("The application have initialised");

                var message        = server.ReceiveMultipartMessage();
                var messagePartOne = message[0].ConvertToString();

                if ("FILE".Equals(messagePartOne))
                {
                    var fileName = message[1].ConvertToString();
                    var data     = message[2].ToByteArray();


                    Console.WriteLine("Frame 0:" + message[0].ConvertToString());
                    Console.WriteLine("Frame 1:" + fileName);
                    Console.WriteLine("Frame 2:" + data.Length);


                    var stream = File.OpenWrite(path + fileName);
                    stream.Write(data, 0, data.Length);
                    stream.Flush();
                    stream.Close();


                    Console.WriteLine("finished writing the file");
                    Console.ReadKey();
                }
            }
        }
コード例 #10
0
        public MessageClient(string ip_address = "127.0.0.1",
                             int port          = 6969,
                             bool use_inter_process_communication = false,
                             bool debug = false,
                             Double wait_time_seconds = 2)
        {
            this._wait_time_seconds = wait_time_seconds;
            this.Debugging          = debug;
            this._ip_address        = ip_address;
            this._port = port;
            this._use_inter_process_communication = use_inter_process_communication;

      #if NEODROID_DEBUG
            if (this.Debugging)
            {
                Debug.Log($"Starting a message server at address:port {ip_address}:{port}");
            }
      #endif

            if (!this._use_inter_process_communication)
            {
                ForceDotNet.Force();
            }

            this._socket = new ResponseSocket();
        }
コード例 #11
0
        /// <summary>
        /// protocol for NetMq
        /// the <message> should be a string send as the second frame and the message must not contain more that two frames or it will be discarded by the server
        /// "A" as first frame if you want <message> + " hello" as response
        /// "B" as first frame if you want "hello " + <message>
        /// </summary>

        static void Main(string[] args)
        {
            Console.WriteLine("NetMQ server have started");


            var server = new ResponseSocket();

            server.Bind("tcp://*:" + ListeningPort);
            while (true)
            {
                var message = server.ReceiveMultipartMessage();
                if (message.FrameCount == 2)
                {
                    var frameOne = message[0];
                    Console.WriteLine("recived message with protocol code: " + frameOne.ConvertToString());

                    //sending response
                    if (frameOne.ConvertToString() == "A")
                    {
                        server.SendFrame(message[1].ConvertToString() + " hello");
                        continue;
                    }
                    else if (frameOne.ConvertToString() == "B")
                    {
                        server.SendFrame(message[1].ConvertToString() + " hello");
                        continue;
                    }
                }

                //must only occure if the message is not valid according to the protocol
                server.SendFrame("INVALID FRAME COUNT!");
            }
        }
コード例 #12
0
        static void Main(string[] args)
        {
            Console.WriteLine("Tier 3 here");
            var reciveSocket = new ResponseSocket();

            reciveSocket.Bind("tcp://0.0.0.0:" + listeningPort);

            var multipartMessage = reciveSocket.ReceiveMultipartMessage();

            var frames = new List <NetMQFrame>();

            while (false == multipartMessage.IsEmpty)
            {
                frames.Add(multipartMessage.Pop());
            }

            Console.WriteLine(frames[3]);

            while (frames.Count > 2)
            {
                frames.RemoveAt(2);
            }

            frames.Add(new NetMQFrame("Yes this is from server three"));
            var responseMessage = new NetMQMessage(frames);

            reciveSocket.SendMultipartMessage(responseMessage);

            Console.ReadKey();
        }
コード例 #13
0
        void establish(Action BindEd)
        {
            ThreadPool.QueueUserWorkItem((o) => {
                ConsoleEx.DebugLog("Respose socket is binding...", ConsoleEx.RED);

                var context = Core.ZeroMQ;
                respSocket  = context.CreateResponseSocket();
                respSocket.Options.SendHighWatermark    = EngCfg.HighWatermark;
                respSocket.Options.ReceiveHighWatermark = EngCfg.HighWatermark;

                //生成通讯地址和协议方式
                BindingAddress = BindAddr(typeof(ResponseSocket));
                respSocket.Bind(BindingAddress);

                ///
                /// 绑定完成,等待Request的请求
                ///
                respSocket.ReceiveReady += Server_ReceiveReady;
                poller.AddSocket(respSocket);
                ThreadPool.QueueUserWorkItem((ob) => { poller.PollTillCancelled(); });

                if (BindEd != null)
                {
                    BindEd();
                }
            });
        }
コード例 #14
0
        public Listener()
        {
            working  = true;
            listener = new Thread(new ThreadStart(() =>
            {
                server = new ResponseSocket();
                server.Bind("tcp://*:5554");

                string message;
                while (working)
                {
                    if (server.TryReceiveFrameString(System.TimeSpan.FromSeconds(2), out message))
                    {
                        Console.WriteLine("receive message: {0}", message);
                        var message_obj = json_converter.JsonConverter.deserialaze(message);
                        ProcessMessage(message_obj as iMessage);
                    }
                    else
                    {
                        Console.WriteLine("No message recieve");
                    }
                }
            }));
            listener.IsBackground = true;
        }
コード例 #15
0
ファイル: Server.cs プロジェクト: git2vinay/NetMQPOC
        public void setupServer()
        {
            using (var server = new ResponseSocket())
            {
                server.Bind("tcp://*:5555");
                while (true)
                {
                    var message = server.ReceiveFrameString();
                    Console.WriteLine(" Message Received on Server {0}", message);
                    Thread.Sleep(200);
                    server.SendFrame("World");
                    Console.WriteLine(" This is master changes that i need in feature branch");
                    Console.WriteLine(" BRanch changes ");
                    Console.WriteLine(" This is master changes that i need in feature branch +1 ");
                    Console.WriteLine(" This is master changes that i need in feature branch +2");
                    Console.WriteLine(" This is master changes that i need in feature branch +3");
                    Console.WriteLine(" This is master changes that i need in feature branch +4");

                    Console.WriteLine(" This is master changes that i need in feature branch +5");
                    Console.WriteLine(" This is master changes that i need in feature branch +4");
                    Console.WriteLine(" This is master changes that i need in feature branch +6");
                    Console.WriteLine(" This is master changes that i need in feature branch +7");

                    Console.WriteLine(" This is master changes that i need in feature branch +8");
                    Console.WriteLine(" This is master changes that i need in feature branch +9");


                    Console.WriteLine(" BRanch changes ");
                }
            }
        }
コード例 #16
0
        public void StartAndStopStateValidation()
        {
            using (var front = new RouterSocket())
                using (var back = new DealerSocket())
                {
                    front.Bind("inproc://frontend");
                    back.Bind("inproc://backend");

                    var proxy = new Proxy(front, back);
                    Task.Factory.StartNew(proxy.Start);

                    // Send a message through to ensure the proxy has started
                    using (var client = new RequestSocket())
                        using (var server = new ResponseSocket())
                        {
                            client.Connect("inproc://frontend");
                            server.Connect("inproc://backend");
                            client.SendFrame("hello");
                            Assert.AreEqual("hello", server.ReceiveFrameString());
                            server.SendFrame("reply");
                            Assert.AreEqual("reply", client.ReceiveFrameString());
                        }

                    Assert.Throws <InvalidOperationException>(proxy.Start);
                    Assert.Throws <InvalidOperationException>(proxy.Start);
                    Assert.Throws <InvalidOperationException>(proxy.Start);

                    proxy.Stop(); // blocks until stopped

                    Assert.Throws <InvalidOperationException>(proxy.Stop);
                }
        }
コード例 #17
0
        static void Main(string[] args)
        {
            var rand = new Random();

            while (true)
            {
                // specify one ephemeral port
                int    port    = rand.Next(49152, 65535);
                string address = $"tcp://*****:*****@{address}"))
                        using (var client = new RequestSocket($">{address}"))
                        {
                            while (true)
                            {
                                client.SendFrame("Hello");
                                Console.WriteLine($"From client: {server.ReceiveFrameString()}");

                                server.SendFrame("Hi Back");
                                Console.WriteLine($"From server: {client.ReceiveFrameString()}");

                                Thread.Sleep(1000);
                            }
                        }
                }
                catch (AddressAlreadyInUseException)
                {
                    Console.WriteLine($"This address is in use. Let's pick onther one.");
                }
            }
        }
コード例 #18
0
ファイル: PortZMq.cs プロジェクト: vinmenn/HBus.DotNet
    /// <summary>
    ///   Start listening on udp port
    /// </summary>
    public override void Start()
    {
      if (_listen) return;

      try
      {
        Log.Info("PortZMq starting");

        Log.Debug(string.Format("Publisher binding on {0}", _endpoint));


        _res = new ResponseSocket();
        _res.Bind(_localpoint);

        _listen = true;

        new Thread(() =>
        {
          try
          {

            while (_listen)
            {
              byte[] data;

              while ((_res != null) && _res.HasIn)
                if (_res.TryReceiveFrameBytes(TimeSpan.FromSeconds(30), out data))
                {
                  Log.Debug(string.Format("Received {0} bytes", data.Length));

                  //Process received data
                  if (!ProcessData(data, data.Length))
                  {
                    _res.SignalError();

                    Log.Error(string.Format("Processing {0} bytes failed", data.Length));
                  }
                  else
                  {
                    _res.SignalOK();

                    Log.Debug(string.Format("Processed {0} bytes", data.Length));
                  }
                }
            }
          }
          catch (Exception e)
          {
            Log.Error("PortZMq loop error", e);
          }
        }).Start();

        base.Start();
      }
      catch (Exception e)
      {
        Log.Error("PortZMq start error", e);
      }
    }
コード例 #19
0
ファイル: AsyncWorker.cs プロジェクト: buldo/MQExperiments
 public AsyncWorker(int id, NetMQContext context, string address) : base(id)
 {
     _responseSocket = context.CreateResponseSocket();
     _responseSocket.Options.ReceiveHighWatermark = 2;
     _responseSocket.Options.SendHighWatermark = 2;
     _responseSocket.Options.Identity = BitConverter.GetBytes(id);
     _responseSocket.Connect(address);
 }
コード例 #20
0
ファイル: Heartbeat.cs プロジェクト: gwenzek/icsharp
        public Heartbeat(ILog logger,  string address, NetMQContext context)
        {
            this.logger = logger;
            this.address = address;
            this.context = context;

            this.server = context.CreateResponseSocket();
            this.stopEvent = new ManualResetEventSlim();
        }
コード例 #21
0
        public ReactiveServer()
        {
            var context = NetMQContext.Create();
            repSocket = context.CreateResponseSocket();
            repSocket.Bind("tcp://127.0.0.1:3334");
            repSocket.ReceiveReady += RepSocketOnReceiveReady;
            var repThread = new Thread(RepThread);
            repThread.Start();

            pubSocket = context.CreatePublisherSocket();
            pubSocket.Bind("tcp://127.0.0.1:3333");
        }
コード例 #22
0
		public CommandListener (int port, Dictionary<int, Job> jobs)
		{
			this.Port = port;
			this.Jobs = jobs;
			this.Context = NetMQContext.Create ();
			this.RequestSock = Context.CreateResponseSocket ();
			this.RequestSock.Bind ("tcp://0.0.0.0:" + Port);
			logger.Info ("Bound to TCP port {0}", Port);

			this.ResponseSock = Context.CreatePushSocket ();
			this.ResponseSock.Bind ("tcp://0.0.0.0:" + (Port + 1));
			logger.Info ("Bound callback to TCP port {0}", (Port + 1));
		}
コード例 #23
0
ファイル: RequestReplyWorker.cs プロジェクト: GrabCAD/netmq
        private static void Main()
        {
            using (var worker = new ResponseSocket())
            {
                worker.Connect(WorkerEndpoint);

                while (true)
                {
                    var msg = worker.ReceiveMultipartMessage();
                    Console.WriteLine("Processing Message {0}", msg.Last.ConvertToString());

                    Thread.Sleep(500);

                    worker.SendFrame(msg.Last.ConvertToString());
                }
            }
        }
コード例 #24
0
ファイル: Program.cs プロジェクト: GrabCAD/netmq
        private static void Main()
        {
            Console.Title = "NetMQ HelloWorld";

            using (var server = new ResponseSocket("@tcp://localhost:5556"))
            using (var client = new RequestSocket("tcp://localhost:5556"))
            {
                client.SendFrame("Hello");

                Console.WriteLine("From Client: {0}", server.ReceiveFrameString());

                server.SendFrame("Hi Back");

                Console.WriteLine("From Server: {0}", client.ReceiveFrameString());

                Console.WriteLine();
                Console.Write("Press any key to exit...");
                Console.ReadKey();
            }
        }
コード例 #25
0
ファイル: Program.cs プロジェクト: GrabCAD/netmq
 private static void WorkerRoutine()
 {
     try
     {
         using (ResponseSocket rep = new ResponseSocket())
         {
             rep.Options.Identity = Encoding.Unicode.GetBytes(Guid.NewGuid().ToString());
             rep.Connect("tcp://localhost:5556");
             //rep.Connect("inproc://workers");
             rep.ReceiveReady += RepOnReceiveReady;
             while (!s_token.IsCancellationRequested)
             {
                 rep.Poll(TimeSpan.FromMilliseconds(100));
             }
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine("Exception on WorkerRoutine: {0}", ex.Message);
         throw;
     }
 }
コード例 #26
0
ファイル: Program.cs プロジェクト: hdxhan/netmq
        private static void Main()
        {
            using (var response = new ResponseSocket())
            {
                string address = GetComputerLanIP();

                if (!string.IsNullOrEmpty(address))
                {
                    Console.WriteLine("Binding tcp://{0}:{1}", address, PortNumber);
                    response.Bind(string.Format("tcp://{0}:{1}", address, PortNumber));

                    while (true)
                    {
                        bool hasMore;
                        string msg = response.ReceiveFrameString(out hasMore);
                        if (string.IsNullOrEmpty(msg))
                        {
                            Console.WriteLine("No msg received.");
                            break;
                        }

                        Console.WriteLine("Msg received! {0}", msg);
                        response.SendFrame(msg, hasMore);

                        Thread.Sleep(1000);
                    }

                    response.Options.Linger = TimeSpan.Zero;
                }
                else
                {
                    Console.WriteLine("Wrong IP address");
                }

                Console.WriteLine("Press any key to exit...");
                Console.ReadKey();
            }
        }
コード例 #27
0
ファイル: Program.cs プロジェクト: cjkao/netmq
        private static int Main(string[] args)
        {
            if (args.Length != 3)
            {
                Console.WriteLine("usage: local_lat <bind-to> <message-size> <roundtrip-count>");
                return 1;
            }

            string bindTo = args[0];
            int messageSize = int.Parse(args[1]);
            int roundtripCount = int.Parse(args[2]);

            using (var rep = new ResponseSocket())
            {
                rep.Bind(bindTo);

                var msg = new Msg();
                msg.InitEmpty();

                for (int i = 0; i != roundtripCount; i++)
                {
                    rep.Receive(ref msg);
                    if (msg.Size != messageSize)
                    {
                        Console.WriteLine("message of incorrect size received. Received: " + msg.Size + " Expected: " + messageSize);
                        return -1;
                    }

                    rep.Send(ref msg, more: false);
                }

                msg.Close();
            }

            return 0;
        }
コード例 #28
0
ファイル: Program.cs プロジェクト: GrabCAD/netmq
        private static void Main()
        {
            Console.Title = "NetMQ LazyPirate Server 2";

            const string serverEndpoint = "tcp://127.0.0.1:5555";

            var random = new Random();

            using (var server = new ResponseSocket())
            {
                Console.WriteLine("S: Binding address {0}", serverEndpoint);
                server.Bind(serverEndpoint);

                var cycles = 0;

                while (true)
                {
                    var request = server.ReceiveFrameString();
                    cycles++;

                    if (cycles > 3 && random.Next(0, 10) == 0)
                    {
                        Console.WriteLine("S: Simulating a crash");
                        Thread.Sleep(5000);
                    }
                    else if (cycles > 3 && random.Next(0, 10) == 0)
                    {
                        Console.WriteLine("S: Simulating CPU overload");
                        Thread.Sleep(1000);
                    }

                    Console.WriteLine("S: Normal request ({0})", request);
                    server.SendFrame(request);
                }
            }
        }
コード例 #29
0
 public void HandleFrameMessage(ResponseSocket server, NetMQMessage msg)
 {
     Debug.Log ("Handling Message");
     if (logTimingInfo || logSimpleTimeInfo)
     {
         DateTime newTime = DateTime.Now;
         Debug.LogFormat("Time since received last msg: {0} ms", newTime.Subtract(_timeForLastMsg).TotalMilliseconds);
         _timeForLastMsg = newTime;
     }
     if (debugNetworkMessages)
         Debug.LogFormat("Received Msg on Server: {0}", ReadOutMessage(msg));
     string msgHeader = msg.First.ConvertToString();
     JsonData jsonData = msg.ReadJson(out msgHeader);
     if (jsonData == null)
     {
         Debug.LogError("Invalid message from client! Cannot parse JSON!\n" + ReadOutMessage(msg));
         return;
     }
     if (msgHeader == null)
     {
         Debug.LogError("Invalid message from client! No msg_type!\n" + jsonData.ToJSON());
         return;
     }
     switch(msgHeader.ToString())
     {
         case MSG_R_Terminate:
             Application.Quit ();
             break;
         case MSG_R_ClientJoin:
             OnClientJoin(server, jsonData);
             RecieveClientInput(server, jsonData);
             break;
         case MSG_R_FrameInput:
             RecieveClientInput(server, jsonData);
             break;
         case MSG_R_ClientJoinWithConfig:
             Debug.Log ("Config received!");
             ReceiveSceneSwitch (server, jsonData);
             Debug.Log ("Config handled!");
             break;
         case MSG_R_SceneSwitch:
             ReceiveSceneSwitch(server, jsonData);
             break;
         default:
             Debug.LogWarningFormat("Invalid message from client! Unknown msg_type '{0}'\n{1}", msgHeader, jsonData.ToJSON());
             break;
     }
 }
コード例 #30
0
    public void OnClientJoin(ResponseSocket server, JsonData data)
    {
        // Setup new avatar object from prefab
        GameObject newGameObject = Instantiate (Resources.Load ("Prefabs/Avatar")) as GameObject;
        Debug.Log (newGameObject.name);
        Avatar newAvatar = newGameObject.GetComponent<Avatar> ();
        if (_avatars.ContainsKey(server))
        {
            Avatar oldAvatar = _avatars[server];
            if (oldAvatar != null && oldAvatar.gameObject != null)
                GameObject.Destroy(_avatars[server].gameObject);
        }
        _avatars[server] = newAvatar;
        newAvatar.InitNetData(this, server);

        newAvatar.sendSceneInfo = data["send_scene_info"].ReadBool(false);
        newAvatar.shouldCollectObjectInfo = data["get_obj_data"].ReadBool(false);
        //
        //        // Send confirmation message
        //        lastMessageSent.Clear();
        //        lastMessageSent.Append(MSG_S_ConfirmClientJoin);
        //        server.SendMultipartMessage(lastMessageSent);
    }
コード例 #31
0
    public void ReceiveSceneSwitch(ResponseSocket server, JsonData jsonData)
    {
        string newEnvironmentScene = jsonData["config"]["environment_scene"].ReadString ("MISSING SCENE TYPE!");

        SimulationManager.setArgsConfig (jsonData["config"]);

        Debug.Log ("Scene config: " + jsonData ["config"].ToJSON ());

                //Debug.Log("Scale Related Dict: " + SimulationManager.argsConfig["scale_relat_dict"]["bed1"]["option"].ToJSON());

        this.scenesToUnload = new List<Scene> ();

        // Unload old scene(s)
        for (int i = 0; i < SceneManager.sceneCount; i++) {
            Scene sceneAtIndex = SceneManager.GetSceneAt (i);
            if (sceneAtIndex.path.StartsWith ("Assets/Scenes/EnvironmentScenes/")) {
                Debug.Log ("Queueing scene unload for: " + sceneAtIndex.name);
                this.scenesToUnload.Add (sceneAtIndex);
            }
        }

        Debug.Log ("Loading \'" + newEnvironmentScene + "\'");

        // Load new scene
        SceneManager.LoadScene (newEnvironmentScene, LoadSceneMode.Additive);
        if (!SceneManager.GetSceneByName (newEnvironmentScene).IsValid()) {
            Debug.LogError ("Scene name \"" + newEnvironmentScene + "\" was not found.");
        }

        if (!SceneManager.GetSceneByName (newEnvironmentScene).path.StartsWith ("Assets/Scenes/EnvironmentScenes/")) {
            Debug.LogError ("Scene is not located in Assets/Scenes/EnvironmentScenes/, please relocate scene file to this directory!");
        }

        SceneManager.sceneLoaded += sceneWasLoaded;

        this.skipFrame = true;
        this.waitForSceneInit = true;

        this.lastSocket = server;
        this.lastJsonContents = jsonData;
    }
コード例 #32
0
 public void RecieveClientInput(ResponseSocket server, JsonData jsonData)
 {
     _avatars[server].HandleNetInput(jsonData);
 }
コード例 #33
0
 private void CreateTestClient(ResponseSocket server)
 {
     RequestSocket client = _ctx.CreateRequestSocket();
     client.Connect("tcp://" + hostAddress + ":" + portNumber);
     _avatarClients[server] = client;
     client.SendFrame(CreateJoinMsgJson().ToJSON());
 }
コード例 #34
0
    public void OnClientJoin(ResponseSocket server, JsonData data)
    {
        // Setup new avatar object from prefab
        GameObject newGameObject = Instantiate (Resources.Load ("Prefabs/Avatar")) as GameObject;
        Debug.Log (newGameObject.name);
        Avatar newAvatar = newGameObject.GetComponent<Avatar> ();
        if (_avatars.ContainsKey(server))
        {
            Avatar oldAvatar = _avatars[server];
            if (oldAvatar != null && oldAvatar.gameObject != null)
                GameObject.Destroy(_avatars[server].gameObject);
        }
        _avatars[server] = newAvatar;
        newAvatar.InitNetData(this, server);

        newAvatar.sendSceneInfo = data["send_scene_info"].ReadBool(false);
        newAvatar.shouldCollectObjectInfo = data["get_obj_data"].ReadBool(false);

        //TODO
        JsonData JsonOutputFormatList = data["output_formats"];
        if (JsonOutputFormatList != null) {
            if (JsonOutputFormatList.Count != newAvatar.outputFormatList.Count) {
                Debug.LogError(newAvatar.outputFormatList.Count.ToString() +
                    " output formats need to be specified, one for each shader!" +
                    " Using standard output formats.");
            }
            List<string> outputFormatList = new List<string>();
            for(int i = 0; i < JsonOutputFormatList.Count; i++) {
                string outputFormat = JsonOutputFormatList[i].ReadString();
                outputFormatList.Add(outputFormat);
            }
            newAvatar.SetOutputFormatList(outputFormatList);
        }
        //
        //        // Send confirmation message
        //        lastMessageSent.Clear();
        //        lastMessageSent.Append(MSG_S_ConfirmClientJoin);
        //        server.SendMultipartMessage(lastMessageSent);
    }