コード例 #1
0
ファイル: Client.cs プロジェクト: shlee322/Netronics
 // 클라이언트로부터 메시지가 왔을때 호출
 public void MessageReceive(IReceiveContext context)
 {
     context.GetChannel().SendMessage("test" + i++);
     Console.WriteLine("Client Thread " + System.Threading.Thread.CurrentThread.ManagedThreadId + " - " + context.GetMessage());
     if ((string) context.GetMessage() == "test20")
         SocketChannel.ExitEvent.Set();
 }
コード例 #2
0
ファイル: Server.cs プロジェクト: shlee322/Netronics
 // 클라이언트로부터 메시지가 왔을때 호출
 public void MessageReceive(IReceiveContext context)
 {
     if(((string) context.GetMessage()).Substring(0,4) != "test")
         throw new Exception("Error!");
     Console.WriteLine("Server Thread " + System.Threading.Thread.CurrentThread.ManagedThreadId + " - " + context.GetMessage());
     context.GetChannel().SendMessage(context.GetMessage());
     //context.GetChannel().SendMessage(context.GetMessage()); // 에코 서버인 만큼 온 데이터를 그대로 전송
 }
コード例 #3
0
ファイル: Server.cs プロジェクト: shlee322/Netronics
        // 클라이언트로부터 메시지가 왔을때 호출
        public void MessageReceive(IReceiveContext context)
        {
            var o = context.GetMessage() as JObject;

            if(o.Value<string>("name") != "test")
                throw new Exception("Error!");
            Console.WriteLine("Server Thread {0} - {1}", System.Threading.Thread.CurrentThread.ManagedThreadId, context.GetMessage());
            context.GetChannel().SendMessage(context.GetMessage());
            //context.GetChannel().SendMessage(context.GetMessage()); // 에코 서버인 만큼 온 데이터를 그대로 전송
        }
コード例 #4
0
ファイル: Client.cs プロジェクト: shlee322/Netronics
        // 클라이언트로부터 메시지가 왔을때 호출
        public void MessageReceive(IReceiveContext context)
        {
            var o = context.GetMessage() as JObject;

            if (o.Value<string>("name") != "test")
                throw new Exception("Error!");

            JObject o2 = new JObject();
            o2.Add("name", "test");
            o2.Add("value", i++);
            context.GetChannel().SendMessage(o2);

            Console.WriteLine("Client Thread " + System.Threading.Thread.CurrentThread.ManagedThreadId + " - " + context.GetMessage());
            if (((JObject) context.GetMessage()).Value<int>("value") == 20)
                SocketChannel.ExitEvent.Set();
        }
コード例 #5
0
ファイル: Handler.cs プロジェクト: shlee322/Netronics
 public void MessageReceive(IReceiveContext context)
 {
     _channelLock.EnterReadLock();
     foreach (var c in _channels)
         c.SendMessage(context.GetMessage());
     _channelLock.ExitReadLock();
 }
コード例 #6
0
ファイル: Handler.cs プロジェクト: shlee322/Netronics
        public void MessageReceive(IReceiveContext context)
        {
            var message = (JToken)context.GetMessage();
            switch (message.Value<string>("type"))
            {
                case "connect":
                    _client.Ver = message.Value<int>("ver");

                    //인증 시스템을 사용한다
                    if(_mobile.UseAuth)
                    {
                        _client.Auth(message.Value<JObject>("auth"));

                        if(_addPushData != null)
                        {
                            _mobile.Push.AddPush(_client, _addPushData);
                            _addPushData = null;
                        }
                    }
                    break;
                case "msg":
                    _mobile.Call(new Request() { Client = _client, Type = message.Value<string>("name"), Arg = message.Value<JToken>("arg") });
                    break;
                case "add_push":
                    if (_client.GetId() != -1)
                        _mobile.Push.AddPush(_client, message);
                    else
                        _addPushData = message;
                    break;
                case "remove_push":
                    _mobile.Push.RemovePush(_client, message);
                    break;
            }
        }
コード例 #7
0
ファイル: Manager.cs プロジェクト: shlee322/Netronics
 public void MessageReceive(IReceiveContext context)
 {
     dynamic message = context.GetMessage();
     if (message.type == "notify_join_service")
         _processor.NotifyJoinService((string)message.service, (int)message.id, (byte[])message.address, (int)message.port);
     else if (message.type == "change_service_id")
         _processor.ChangeServiceId((int)message.id);
     else if (message.type == "max_entity_id")
         _processor.ChangeMaxEntityId((long)message.value);
 }
コード例 #8
0
ファイル: Handler.cs プロジェクト: shlee322/Netronics
 public void MessageReceive(IReceiveContext context)
 {
     if (context.GetChannel().GetTag() is bool)
     {
         context.GetChannel().SetTag(context.GetMessage());
         SendMessage(context.GetChannel() + " name is " + context.GetChannel().GetTag() + "\r\n> ");
         return;
     }
     SendMessage(context.GetChannel().GetTag() + " : " + context.GetChannel() + "> ");
 }
コード例 #9
0
 public void MessageReceive(IReceiveContext context)
 {
     var packet = (JObject)context.GetMessage();
     System.Console.WriteLine(packet);
     string type = packet["type"].Value<string>();
     switch (type)
     {
         case "ant_name_list":
             Kernel.GetKernel().InitAnts(((JArray)packet["args"]));
             break;
         case "approve_join_ant":
             var args = packet["args"].Value<JObject>();
             Kernel.GetKernel().ApproveJoinAnt(args["id"].Value<int>(), args["network"].Value<JArray>().Values<JObject>());
             break;
     }
 }
コード例 #10
0
 public void MessageReceive(IReceiveContext context)
 {
     var packet = (JObject)context.GetMessage();
     System.Console.WriteLine(packet);
     string type = packet["type"].Value<string>();
     switch (type)
     {
         case "get_ant_name_list":
             context.GetChannel().SendMessage("ant_name_list", new JArray(QueenAnt.GetQueenAnt().GetAntNameArray()));
             break;
         case "request_join_ant":
             AntManager.GetAntManager().RequestJoinAnt(context.GetChannel(), packet["args"].Value<JObject>());
             break;
         case "start_ant":
             AntManager.GetAntManager().StartAnt(context.GetChannel().GetTag() as Ant);
             break;
     }
 }
コード例 #11
0
ファイル: AntPipeline.cs プロジェクト: shlee322/Netronics
 public void MessageReceive(IReceiveContext context)
 {
     var packet = (JObject)context.GetMessage();
     string type = packet["type"].Value<string>();
     switch (type)
     {
         case "hello_ant":
             var args = packet["args"].Value<JObject>();
             Kernel.GetKernel().HelloAnt(context.GetChannel(), args.Value<int>("ant"), args.Value<int>("id"));
             break;
         case "request":
             var ant = context.GetChannel().GetTag() as RemoteAnt;
             ant.ReceiveTask(packet["t_id"].Value<int>(), packet["m_type"].Value<int>(), packet["args"]);
             break;
         case "response":
             ant = context.GetChannel().GetTag() as RemoteAnt;
             ant.ResponseTask(packet["t_id"].Value<int>(), packet["args"]);
             break;
         default:
             System.Console.WriteLine(packet);
             break;
     }
 }
コード例 #12
0
ファイル: Handler.cs プロジェクト: shlee322/Netronics
 // 클라이언트로부터 메시지가 왔을때 호출
 public void MessageReceive(IReceiveContext context)
 {
     context.GetChannel().SendMessage(context.GetMessage()); // 에코 서버인 만큼 온 데이터를 그대로 전송
 }
コード例 #13
0
ファイル: HttpHandler.cs プロジェクト: shlee322/Netronics
        public void MessageReceive(IReceiveContext context)
        {
            var request = context.GetMessage() as Request;
            if(request == null)
                return;

            Processing(context.GetChannel(), request);

            if (request.GetHeader("Connection") == null || request.GetHeader("Connection") == "close")
                context.GetChannel().Disconnect();
        }
コード例 #14
0
ファイル: Service.cs プロジェクト: shlee322/Netronics
 public void MessageReceive(IReceiveContext context)
 {
     dynamic message = context.GetMessage();
     if (message.type == "connect_service_info")
         _processor.ConnectServiceInfo(context.GetChannel(), (string)message.service, (int)message.id);
 }
コード例 #15
0
ファイル: Handler.cs プロジェクト: shlee322/Netronics
 public void MessageReceive(IReceiveContext context)
 {
     dynamic message = context.GetMessage();
     if(message.type == "join_service")
         _manager.JoinService(context.GetChannel(), (string)message.name, message.id == null ? -1 : (int)message.id, (JArray)message.address, (int)message.port);
 }
コード例 #16
0
ファイル: Client.cs プロジェクト: shlee322/Netronics
        public void MessageReceive(IReceiveContext context)
        {
            if(context.GetMessage() is ConnectionClose)
            {
                context.GetChannel().Disconnect();
                return;
            }
            else if (context.GetMessage() is byte[])
            {
                string msg = System.Text.Encoding.UTF8.GetString(context.GetMessage() as byte[]);

                if (msg.StartsWith("0"))
                {
                    context.GetChannel().Disconnect();
                }
                else if (msg.StartsWith("3:::")) //Message
                {
                    if (msg.Length < 5)
                        return;
                    if (_event.ContainsKey("message"))
                        _event["message"](msg.Substring(4));
                }
                else if (msg.StartsWith("4:::")) //JSON Message
                {
                    if (msg.Length < 5)
                        return;
                    if (_event.ContainsKey("message"))
                        _event["message"](JsonConvert.DeserializeObject(msg.Substring(4)));

                }
                else if (msg.StartsWith("5:::")) //Event
                {
                    if (msg.Length < 5)
                        return;
                    dynamic data = JsonConvert.DeserializeObject(msg.Substring(4));
                    if(_event.ContainsKey(data.name.ToString()))
                        _event[data.name.ToString()](data.args);
                }
            }
        }