예제 #1
0
        static void Main(string[] args)
        {
            Dictionary <string, List <string> > offerStorage = new Dictionary <string, List <string> >();

            Console.WriteLine("TypeClientAggregator");
            using (var server = new ResponseSocket())
                using (var emailer = new RequestSocket())
                {
                    server.Bind("tcp://*:5557");
                    emailer.Connect("tcp://127.0.0.1:5558");
                    while (true)
                    {
                        var message = server.ReceiveMultipartMessage(3);

                        Console.WriteLine("responseSocket : Server Received '{0}'-{1}", message[0].ConvertToString(Encoding.UTF8), message[1].ConvertToString(Encoding.UTF8));
                        string hashKey = GetHashString(message[0].ConvertToString(Encoding.UTF8) + message[1].ConvertToString(Encoding.UTF8));
                        if (offerStorage.ContainsKey(hashKey))
                        {
                            offerStorage[hashKey].Add(message[2].ConvertToString(Encoding.UTF8));
                            if (offerStorage[hashKey].Count >= 3)
                            {
                                mailOffer(emailer, message[0].ConvertToString(Encoding.UTF8), message[1].ConvertToString(Encoding.UTF8), offerStorage[hashKey]);
                                offerStorage.Remove(hashKey);
                            }
                        }
                        else
                        {
                            offerStorage.Add(hashKey, new List <string>());
                            offerStorage[hashKey].Add(message[2].ConvertToString(Encoding.UTF8));
                        }
                        server.SendFrameEmpty();
                    }
                }
        }
예제 #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Emailer!");

            using (var server = new ResponseSocket())
            {
                server.Bind("tcp://*:5558");
                while (true)
                {
                    var message = server.ReceiveMultipartMessage(5);
                    Console.WriteLine("responseSocket : Server Received '{0}'-{1}", message[0].ConvertToString(Encoding.UTF8), message[1].ConvertToString(Encoding.UTF8));
                    EmailOffer(message);
                    server.SendFrameEmpty();
                }
            }
        }
예제 #3
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Starting the application");
            using (var responseSocket = new ResponseSocket("@tcp://*:42424"))
            {
                while (true)
                {
                    var frame   = responseSocket.ReceiveFrameString();
                    var message = JsonConvert.DeserializeObject(frame, new JsonSerializerSettings
                    {
                        ContractResolver = new CamelCasePropertyNamesContractResolver()
                    });
                    responseSocket.SendFrameEmpty();

                    Console.WriteLine(frame);
                }
            }
        }
예제 #4
0
        static void Main(string[] args)
        {
            Console.WriteLine("Type content router");
            using (var server = new ResponseSocket())
                using (var publish = new PublisherSocket())
                {
                    server.Bind("tcp://*:5555");
                    publish.Bind("tcp://*:5556");
                    while (true)
                    {
                        var message = server.ReceiveMultipartMessage(2);

                        Console.WriteLine("responseSocket : Server Received '{0}'-{1}", message[0].ConvertToString(Encoding.UTF8), message[1].ConvertToString(Encoding.UTF8));
                        server.SendFrameEmpty();

                        publish.SendMultipartMessage(message);
                    }
                }
        }
예제 #5
0
파일: ZmqImpl.cs 프로젝트: inwazy/Zeron
        /// <summary>
        /// ResponseSocketProc
        /// </summary>
        /// <param name="aArg"></param>
        /// <returns>Returns void.</returns>
        private static void ResponseSocketProc(object aArg)
        {
            string message;

            while (m_EnableResponseProc)
            {
                try
                {
                    message = m_ResponseSocket.ReceiveFrameString();

                    if (message == null || string.IsNullOrEmpty(message))
                    {
                        m_ResponseSocket.SendFrameEmpty();

                        continue;
                    }

                    dynamic json      = JsonConvert.DeserializeObject <dynamic>(message);
                    string  apiName   = Convert.ToString(json["APIName"]);
                    string  apiKey    = Convert.ToString(json["APIKey"]);
                    bool    asyncTask = Convert.ToBoolean(json["Async"]);

                    m_RepAPIResponse.TryGetValue(apiName, out ServicesRepAttribute serviceAttribute);
                    m_RepAPITypeResponse.TryGetValue(apiName, out Type serviceType);

                    if (serviceAttribute == null || serviceType == null)
                    {
                        m_ResponseSocket.SendFrameEmpty();

                        continue;
                    }

                    if (!m_ResponsetApiKey.Contains(Encryption.Decrypt(apiKey)))
                    {
                        m_ResponseSocket.SendFrameEmpty();

                        continue;
                    }

                    IServices serviceInstance = Activator.CreateInstance(serviceType) as IServices;

                    string responseMessage = "";

                    if (asyncTask)
                    {
                        responseMessage = serviceInstance.OnRequestAsync(json);
                    }
                    else
                    {
                        responseMessage = serviceInstance.OnRequest(json);
                    }

                    m_ResponseSocket.SendFrame(responseMessage);

                    if (serviceAttribute.ZmqNotifySubscriber)
                    {
                        serviceInstance.OnNotifySubscriber(json, responseMessage);
                    }
                }
                catch (Exception e)
                {
                    ZNLogger.Common.Error(string.Format(CultureInfo.InvariantCulture, "ZmqImpl Error:{0}\n{1}", e.Message, e.StackTrace));
                }
            }
        }
예제 #6
0
        void BeginServer()
        {
            using (var pubSocket = new PublisherSocket())
                using (var server = new ResponseSocket())
                {
                    SetText($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 服务器启动成功!");

                    //绑定订阅端口
                    pubSocket.Bind($"tcp://{pubIP}:{pubPort}");
                    //绑定服务端口
                    server.Bind($"tcp://{serverIP}:{serverPort}");

                    while (true)
                    {
                        //接收消息
                        string messsage = server.ReceiveFrameString();
                        #region 处理消息
                        var data = MessageHelper.GetMessage(messsage);
                        if (data != null)
                        {
                            if (data.UserStatus.Equals(UserStatus.Connect))
                            {
                                data.Message  = $"欢迎{data.UserName}加入聊天室";
                                data.UserName = "******";
                            }

                            if (data.UserStatus.Equals(UserStatus.Close))
                            {
                                data.Message  = $"{data.UserName}退出聊天室";
                                data.UserName = "******";
                            }
                            string file_name = "";
                            if (data.File != null && !string.IsNullOrEmpty(data.File.FileName))
                            {
                                file_name = "上传了【" + data.File.FileName + "】文件";
                            }
                            string msg = "";
                            if (!string.IsNullOrEmpty(data.Message))
                            {
                                msg = "发送了【" + data.Message + "】消息";
                            }

                            SetText($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} {data.UserName}:{file_name} {msg}");
                        }
                        else
                        {
                            data = new DataStructure
                            {
                                UserName = "******",
                                Message  = "网络异常",
                                DateTime = DateTime.Now
                            };
                        }

                        #endregion
                        // 推送消息

                        pubSocket.SendMoreFrame("all").SendFrame(MessageHelper.SendMessage(data));
                        server.SendFrameEmpty();
                    }
                }
        }