Example #1
0
        static void Ping(dynamic Message, WebsocketClient Client)
        {
            Console.WriteLine("Got a ping");
            Ping ping = new Ping();

            Client.Send(JsonConvert.SerializeObject(ping));
        }
Example #2
0
        public void RxPingTest()
        {
            //Arrange
            var objWebSocketClient  = Substitute.For <IWebSocketClient>();
            var objKeepAliveMonitor = Substitute.For <IKeepAliveMonitor>();
            var objClient           = new WebsocketClient(objWebSocketClient, objKeepAliveMonitor);
            var handler             = Substitute.For <EventHandler <byte[]> >();
            var eventArgs           = Substitute.For <IMessageEventArgs>();

            eventArgs.IsText.Returns(false);
            eventArgs.IsPing.Returns(true);
            eventArgs.IsBinary.Returns(false);

            objClient.Rx += handler;

            //Act
            objClient.ConnectAsync(new ClientParams()
            {
                HostName = "localhost", Port = 80, Secure = false
            });
            objWebSocketClient.OnMessage += Raise.Event <EventHandler <IMessageEventArgs> >(objClient, eventArgs);

            //Assert
            objKeepAliveMonitor.Received(1).Reset();
            handler
            .Received(0)
            .Invoke(Arg.Any <IConnection.IConnection>(), Arg.Any <byte[]>())
            ;
        }
Example #3
0
        public async Task Open(string url)
        {
            if (url.StartsWith("https"))
            {
                url = url.Replace("https", "wss");
            }
            else if (url.StartsWith("http"))
            {
                url = url.Replace("http", "ws");
            }

            if (client != null)
            {
                return;
            }

            client = new WebsocketClient(new Uri(url));

            client.MessageReceived.Subscribe(OnMessageReceived);
            client.DisconnectionHappened.Subscribe(delegate(DisconnectionInfo info) { client.Reconnect(); });

            client.ReconnectionHappened.Subscribe(delegate(ReconnectionInfo info)
            {
                Console.WriteLine(info.Type);
            });

            await client.Start();
        }
Example #4
0
        private HandlerWorkResult HandleGameList(BufferStream stream, WebsocketClient client)
        {
            stream.Read(out ushort gameCount);
            Console.WriteLine(gameCount);

            var gameList = new List <GameModel>();

            for (int i = 0; i < gameCount; i++)
            {
                var game = new GameModel(stream);

                gameList.Add(game);
            }

            foreach (var game in gameList.Where(x => x.Started == 0))
            {
                Console.WriteLine("Game:" + game.Name);
                Console.WriteLine("Started:" + game.Started);
                Console.WriteLine("HasPassword:"******"Tick:" + game.GameTicks);
                Console.WriteLine("Counter:" + game.GameCounter);
                foreach (var player in game.Players)
                {
                    Console.WriteLine("\tPlayer: " + player.Name + " color: " + player.Color);
                }
            }

            return(new HandlerWorkResult()
            {
                IsOk = true,
            });
        }
Example #5
0
        public void ConnectAsyncTest()
        {
            //Arrange
            var objWebSocketClient  = Substitute.For <IWebSocketClient>();
            var objKeepAliveMonitor = Substitute.For <IKeepAliveMonitor>();
            var objClient           = new WebsocketClient(objWebSocketClient, objKeepAliveMonitor);

            //Act
            objClient.ConnectAsync(new ClientParams()
            {
                HostName = "localhost",
                Port     = 80,
                Secure   = false,
                ConnectionTimeoutSeconds = 666
            });

            //Assert
            objWebSocketClient.Received(1).OnOpen        += Arg.Any <EventHandler>();
            objWebSocketClient.Received(1).OnClose       += Arg.Any <EventHandler <ICloseEventArgs> >();
            objWebSocketClient.Received(1).OnError       += Arg.Any <EventHandler <IErrorEventArgs> >();
            objWebSocketClient.Received(1).OnMessage     += Arg.Any <EventHandler <IMessageEventArgs> >();
            objKeepAliveMonitor.Received(1).TimeOut      += Arg.Any <EventHandler>();
            objKeepAliveMonitor.Received(1).UnResponsive += Arg.Any <EventHandler>();

            Assert.AreEqual(666, objWebSocketClient.ConnectionTimeoutSeconds);
        }
Example #6
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            var exitEvent = new ManualResetEvent(false);
            //var url = new Uri("wss://localhost:5001/api/Test/stream");
            var url = new Uri("wss://localhost:27926/testWebSocket");

            using (var client = new WebsocketClient(url))
            {
                client.ReconnectTimeout = TimeSpan.FromSeconds(300);
                client.ReconnectionHappened.Subscribe(info =>
                {
                    Console.WriteLine($"重连,type: {info.Type}");
                });

                client.MessageReceived.Subscribe(msg =>
                {
                    Console.WriteLine($"收到消息: {msg}");
                });

                client.Start().Wait();

                //Task.Run(() => StartSendingPing(client));

                exitEvent.WaitOne();
            }
        }
 public void ListenToWsEvents(WebsocketClient websocketClient, int delayBeforeReconnectInMs)
 {
     _webSocketClient.ReconnectTimeout      = TimeSpan.FromMilliseconds(delayBeforeReconnectInMs);
     _webSocketClient.ErrorReconnectTimeout = TimeSpan.FromMilliseconds(delayBeforeReconnectInMs * 4);
     _webSocketClient.DisconnectionHappened.Subscribe(type => this.OnClose(this, type));
     _webSocketClient.MessageReceived.Subscribe(type => this.OnMessage(this, type));
 }
        private void HandleMessage(WebsocketClient client, ResponseMessage message)
        {
            LoggerService.Information("WebSocket", "Message received");
            string content = message.Text;

            LoggerService.Debug("WebSocket", content);
            try
            {
                WebSocketMessage wsm = JsonConvert.DeserializeObject <WebSocketMessage>(content);
                switch (wsm.code)
                {
                case WebSocketMessageCode.Covid:
                    OnCovidMessageReceived(wsm.data.ToString());
                    break;

                case WebSocketMessageCode.Test:
                    OnTestMessageReceived(wsm.data.ToString());
                    break;
                }
            }
            catch
            {
                LoggerService.Warning("WebSocket", "Received a message in the wrong format. Ignoring.");
            }
        }
Example #9
0
    // Use this for initialization
    void Start()
    {
        GameObject wso = GameObject.FindWithTag("WebsocketTag");

        wsc = wso.GetComponent <WebsocketClient> ();

        Button ghl = gh_l.GetComponent <Button> ();
        Button hpl = hp_l.GetComponent <Button> ();
        Button spl = sp_l.GetComponent <Button> ();
        Button cpl = cp_l.GetComponent <Button> ();

        Button ghr = gh_r.GetComponent <Button> ();
        Button hpr = hp_r.GetComponent <Button> ();
        Button spr = sp_r.GetComponent <Button> ();
        Button cpr = cp_r.GetComponent <Button> ();

        ghl.onClick.AddListener(goHome_left);
        hpl.onClick.AddListener(handingPose_left);
        spl.onClick.AddListener(shrugPose_left);
        cpl.onClick.AddListener(cranePose_left);

        ghr.onClick.AddListener(goHome_right);
        hpr.onClick.AddListener(handingPose_right);
        spr.onClick.AddListener(shrugPose_right);
        cpr.onClick.AddListener(cranePose_right);
    }
Example #10
0
        protected override void InitConnection()
        {
            SetStatus(DisplayStatus.Connecting);
            ServerDiscoverer discoverer = new ServerDiscoverer();
            IpAddress        address    = null;

            do
            {
                address = discoverer.discover();
            } while (address == null && Status != DisplayStatus.Closing);
            if (Status != DisplayStatus.Closing)
            {
                websocket = new WebsocketClient(new Uri($"ws://{address}"));
                websocket.IsReconnectionEnabled = true;
                websocket.ReconnectionHappened.Subscribe(info => {
                    ExternalEventArgs args = new ExternalEventArgs();
                    args.Action            = ExternalAction.ConnectionChanged;
                    args.Command           = DisplayStatus.Connected;
                    EventReceived(args);
                    Console.WriteLine($"Reconnection happened, type: {info.Type}");
                });
                websocket.ReconnectTimeout = null;
                websocket.DisconnectionHappened.Subscribe(info => {
                    ExternalEventArgs args = new ExternalEventArgs();
                    args.Action            = ExternalAction.ConnectionChanged;
                    args.Command           = DisplayStatus.Connecting;
                    EventReceived(args);
                    Console.WriteLine($"Disconnect happened, type: {info.Type}");
                });
                websocket.MessageReceived.Subscribe(msg => MessageReceived(msg.Text));
                websocket.StartOrFail().Wait();
                SetStatus(DisplayStatus.Connected);
            }
        }
        public void Initialize()
        {
            var exitEvent = new ManualResetEvent(false);
            var url       = new Uri("wss://api.anastarawneh.tech/v1/covid-19/ws");

            Task.Run(() => {
                try {
                    using (client = new WebsocketClient(url))
                    {
                        client.ReconnectTimeout      = null;
                        client.ErrorReconnectTimeout = null;
                        client.ReconnectionHappened.Subscribe(info =>
                                                              LoggerService.Information("WebSocket", $"Reconnection happened, type: {info.Type}"));
                        client.DisconnectionHappened.Subscribe(info =>
                        {
                            LoggerService.Information("WebSocket", $"Disconnection happened, type: {info.Type}");
                            LoggerService.Information("WebSocket", info.Exception.ToString());
                        });

                        client.MessageReceived.Subscribe((msg) => HandleMessage(client, msg));
                        client.Start();
                        LoggerService.Information("WebSocket", "WebSocket client started");

                        resetEvent.WaitOne();
                    }
                }
                catch (Exception ex)
                {
                    LoggerService.Exception(ex);
                }
            });
        }
        public async Task Invoke(HttpContext context)
        {
            if (context.Request.Path == "/ws")
            {
                if (context.WebSockets.IsWebSocketRequest)
                {
                    WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync();

                    string          clientId = Guid.NewGuid().ToString();
                    WebsocketClient client   = new WebsocketClient()
                    {
                        ClientId  = clientId,
                        Websocket = webSocket
                    };
                    try {
                        await Handle(client);
                    } catch (Exception ex) {
                        await context.Response.WriteAsync("closed");
                    }
                }
                else
                {
                    context.Response.StatusCode = 404;
                }
            }
            else
            {
                await _next(context);
            }
        }
Example #13
0
        /// <inheritdoc/>
        public async Task <IWebsocketClient> CreateClientAsync(Action <WebsocketClient> config = null)
        {
            var client = new WebsocketClient(await _url.Value);

            config?.Invoke(client);
            return(client);
        }
Example #14
0
        public async Task CloseClient(WebsocketClient client, WebSocketCloseStatus closeStatus, string closeDesc)
        {
            Clients.TryRemove(client.Id, out client);
            await client.Client.CloseAsync(closeStatus, closeDesc, CancellationToken.None);

            client.Client.Dispose();
        }
Example #15
0
    void Start()
    {
        // Get the live websocket client
        wsc = GameObject.Find("WebsocketClient").GetComponent <WebsocketClient>();

        // Get the live TFListener
        TFListener = GameObject.Find("TFListener").GetComponent <TFListener>();

        // Create publisher to the Baxter's arm topic (uses Ein)
        wsc.Advertise("ein/" + arm + "/forth_commands", "std_msgs/String");
        // Asychrononously call sendControls every .1 seconds
        InvokeRepeating("SendControls", .1f, .1f);

        if (arm == "left")
        {
            grip_label    = "Left Grip";
            trigger_label = "Left Trigger";
        }
        else if (arm == "right")
        {
            grip_label    = "Right Grip";
            trigger_label = "Right Trigger";
        }
        else
        {
            Debug.LogError("arm variable is not set correctly");
        }
    }
Example #16
0
        static void Websocket(string[] args)
        {
            WebsocketClient ws = new WebsocketClient("localhost:15555");

            ws.BeforeSend = (msg) =>
            {
                msg.Headers["cmd"] = "pub";
                msg.Headers["mq"]  = "MyRpc";
                msg.Headers["ack"] = "false";
            };

            ws.OnOpen += async(client) =>
            {
                IDictionary <string, object> data = new Dictionary <string, object>();
                data["method"] = "plus";
                data["params"] = new object[] { 1, 2 };
                data["module"] = "/";


                for (int i = 0; i < 100; i++)
                {
                    Message msg = new Message
                    {
                        Body = data
                    };

                    var res = await ws.InvokeAsync(msg);

                    Console.WriteLine(JsonKit.SerializeObject(res));
                }
            };

            ws.ConnectAsync();
        }
        static async Task Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            var exitEvent = new ManualResetEvent(false);
            var url       = new Uri("wss://echo.websocket.org");
            var loop      = 1;

            using (var client = new WebsocketClient(url))
            {
                client.ReconnectTimeoutMs = (int)TimeSpan.FromSeconds(30).TotalMilliseconds;
                client.ReconnectionHappened.Subscribe(type => Console.WriteLine($"Reconnection happened, type: {type}"));

                client.MessageReceived.Subscribe(async msg =>
                {
                    Console.WriteLine($"Message received: {msg}");
                    await SendMessage(client, loop);
                    loop++;
                });

                await client.Start();

                await Task.Run(() => client.Send($"sawasdee first time"));

                exitEvent.WaitOne();
            }
        }
Example #18
0
        /// <summary>
        /// Dispose
        /// </summary>
        /// <returns></returns>
        public async ValueTask DisposeAsync()
        {
            await WebsocketClient.CloseAsync(WebSocketCloseStatus.NormalClosure, "unavailable", CancellationToken.None);

            WebsocketClient.Dispose();
            await OnDisconnectAsync();
        }
Example #19
0
        public void StartInteracting()
        {
            UniLog.Log("Start Text interaction");
            UniLog.Log("Attaching component");
            client = metagen_comp.interaction_slot.GetComponent <WebsocketClient>();
            if (client == null)
            {
                client = metagen_comp.interaction_slot.AttachComponent <WebsocketClient>();
            }
            //client = metagen_comp.Slot.AttachComponent<WebsocketClient>();
            UniLog.Log("Attached component");
            //client.Connected += AddEventHandlers;
            client.TextMessageReceived   += OnTextMessageReceived;
            client.BinaryMessageReceived += OnBinaryMessageReceived;
            //client.HandlingUser.Target = metagen_comp.LocalUser;
            client.HandlingUser.Target = FrooxEngine.Engine.Current.WorldManager.FocusedWorld.LocalUser;
            client.URL.Value           = new Uri("ws://localhost:8765");
            //client.URL.Value = new Uri("ws://localhost:8765");
            //client.TextMessageReceived += OnTextMessageReceived;
            //client.BinaryMessageReceived += OnBinaryMessageReceived;
            bool could_read_output_field = metagen_comp.interaction_space.TryReadValue <Sync <string> >("output field", out output_field);
            bool could_read_input_field  = metagen_comp.interaction_space.TryReadValue <Sync <string> >("input field", out input_field);

            if (input_field != null)
            {
                input_field.OnValueChange += new SyncFieldEvent <string>(OnInputFieldChanged);
            }
            isInteracting = true;
        }
    private void Call()
    {
        roomName = roomNameText.text;
        Debug.Log($"Calling room {roomName}");
        if (roomName.Length == 0)
        {
            infoText.text = "Please enter a room name";
            return;
        }
        callButton.interactable = false;
        void onOpen()
        {
            Debug.Log("onOpen");
            SendWsMessage("create or join", new JsonMessageData {
                room = roomName
            });
        }

        void onMessage(string msg)
        {
            Debug.Log("onMessage");
            HandleMessage(msg);
        }

        ws = new WebsocketClient(onOpen, onMessage);
        ws.Connect();
    }
Example #21
0
        private HandlerWorkResult HandleMessage(BufferStream stream, WebsocketClient client)
        {
            Console.WriteLine("new chat message");
            string chatMsg = "";

            try
            {
                stream.Read(out string msgStr);
                chatMsg += " " + msgStr;
                stream.Read(out msgStr);
                chatMsg += " " + msgStr;
                stream.Read(out msgStr);
                chatMsg += " " + msgStr;
                stream.Read(out msgStr);
                chatMsg += " " + msgStr;

                Console.WriteLine(chatMsg);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }

            return(new HandlerWorkResult()
            {
                IsOk = true,
            });
        }
Example #22
0
        public async Task DisabledReconnecting_ShouldWorkAtRuntime()
        {
            using (IWebsocketClient client = new WebsocketClient(WebsocketUrl))
            {
                var receivedCount = 0;

                client.IsReconnectionEnabled = true;
                client.ReconnectTimeout      = TimeSpan.FromSeconds(5);

                client.MessageReceived.Subscribe(msg =>
                {
                    receivedCount++;
                    if (receivedCount >= 2)
                    {
                        client.IsReconnectionEnabled = false;
                    }
                });

                await client.Start();

                await Task.Delay(17000);

                Assert.Equal(2, receivedCount);
            }
        }
Example #23
0
        public void DisconnectTest()
        {
            //Arrange
            var objWebSocketClient  = Substitute.For <IWebSocketClient>();
            var objKeepAliveMonitor = Substitute.For <IKeepAliveMonitor>();
            var objClient           = new WebsocketClient(objWebSocketClient, objKeepAliveMonitor);
            var objHandler          = Substitute.For <EventHandler <IConnection.IConnection> >();

            objClient.Disconnected += objHandler;

            //Act
            objClient.ConnectAsync(new ClientParams()
            {
                HostName = "localhost", Port = 80, Secure = false
            });
            objClient.Disconnect();

            //Assert
            objWebSocketClient.Received(1).OnOpen        -= Arg.Any <EventHandler>();
            objWebSocketClient.Received(1).OnClose       -= Arg.Any <EventHandler <ICloseEventArgs> >();
            objWebSocketClient.Received(1).OnError       -= Arg.Any <EventHandler <IErrorEventArgs> >();
            objWebSocketClient.Received(1).OnMessage     -= Arg.Any <EventHandler <IMessageEventArgs> >();
            objKeepAliveMonitor.Received(1).TimeOut      -= Arg.Any <EventHandler>();
            objKeepAliveMonitor.Received(1).UnResponsive -= Arg.Any <EventHandler>();

            objKeepAliveMonitor.Received(1).Stop();

            objHandler
            .Received(1)
            .Invoke(Arg.Is(objClient), Arg.Is(objClient))
            ;
        }
Example #24
0
        public async Task SendBinaryMessage_ShouldWork()
        {
            using (IWebsocketClient client = new WebsocketClient(WebsocketUrl))
            {
                string received      = null;
                var    receivedEvent = new ManualResetEvent(false);

                client.MessageReceived.Subscribe(msg =>
                {
                    var msgText = msg.Text ?? string.Empty;
                    if (msgText.Contains("Unrecognized request"))
                    {
                        received = msgText;
                        receivedEvent.Set();
                    }
                });

                await client.Start();

                client.Send(new byte[] { 10, 14, 15, 16 });

                receivedEvent.WaitOne(TimeSpan.FromSeconds(30));

                Assert.NotNull(received);
            }
        }
Example #25
0
        public void RxTextTest()
        {
            //Arrange
            var objWebSocketClient  = Substitute.For <IWebSocketClient>();
            var objKeepAliveMonitor = Substitute.For <IKeepAliveMonitor>();
            var objClient           = new WebsocketClient(objWebSocketClient, objKeepAliveMonitor);
            var handler             = Substitute.For <EventHandler <byte[]> >();
            var eventArgs           = Substitute.For <IMessageEventArgs>();

            eventArgs.IsText.Returns(true);
            eventArgs.IsPing.Returns(false);
            eventArgs.IsBinary.Returns(false);

            objClient.Rx += handler;
            eventArgs.Data.Returns("TEST");

            //Act
            objClient.ConnectAsync(new ClientParams()
            {
                HostName = "localhost", Port = 80, Secure = false
            });
            objWebSocketClient.OnMessage += Raise.Event <EventHandler <IMessageEventArgs> >(objClient, eventArgs);

            //Assert
            objKeepAliveMonitor.Received(1).Reset();
            handler
            .Received(1)
            .Invoke(Arg.Is <IConnection.IConnection>(m => m.Equals(objClient)), Arg.Is <byte[]>(b => b.SequenceEqual(System.Text.Encoding.UTF32.GetBytes("TEST"))))
            ;
        }
Example #26
0
        public async Task Invoke(HttpContext context)
        {
            if (context.Request.Path == "/wss")
            {
                if (context.WebSockets.IsWebSocketRequest)                                 //检验是不是websocket请求
                {
                    WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync(); //是websocket请求的话就接受

                    string clientId = Guid.NewGuid().ToString();                           //Guid是一个128位整数(16字节),可以在需要唯一标识符的所有计算机和网络中使用,此类标识符的重复率极低(具体详细参考MSDN即可)
                    var    wsClient = new WebsocketClient
                    {
                        Id        = clientId,
                        WebSocket = webSocket
                    };
                    try
                    {
                        await Handle(wsClient);
                    }
                    catch (Exception ex)
                    {
                        _logger.LogError(ex, "Echo websocket client {0} err .", clientId);
                        await context.Response.WriteAsync("closed");
                    }
                }
                else
                {
                    context.Response.StatusCode = 404;
                }
            }
            else
            {
                await _next(context);
            }
        }
Example #27
0
        public async Task SetupDiscordWebSocket()
        {
            Func <ClientWebSocket> factory = () => new ClientWebSocket()
            {
                Options =
                {
                    KeepAliveInterval     = TimeSpan.FromSeconds(120),
                    Credentials           = CredentialCache.DefaultNetworkCredentials,
                    UseDefaultCredentials = true
                }
            };

            using (discordWebSocket = new WebsocketClient(new Uri(discordUrl), factory))
            {
                discordWebSocket.IsReconnectionEnabled = true;
                discordWebSocket.ErrorReconnectTimeout = TimeSpan.FromSeconds(30);
                discordWebSocket.ReconnectTimeout      = null; //TimeSpan.FromSeconds(60);
                discordWebSocket.MessageReceived.Subscribe(HandleDiscordWebSocketMessage);
                discordWebSocket.ReconnectionHappened.Subscribe(HandleDiscordWebSocketReconnection);
                discordWebSocket.DisconnectionHappened.Subscribe(HandleDiscordWebSocketDisconnection);
                Task.Run(() => discordWebSocket.Start());
                Console.WriteLine("Started WebSocket Client for Discord bot");
                exitEvent.WaitOne();
            }
        }
Example #28
0
        private async Task Handle(WebsocketClient webSocket)
        {
            WebsocketClientCollection.Add(webSocket);
            _logger.LogInformation($"Websocket client added.");

            WebSocketReceiveResult result = null;

            do
            {
                var buffer = new byte[1024 * 1];
                result = await webSocket.WebSocket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None);

                //WebSocketMessageType的值:Binary=>二进制形式  Close=>因为收到关闭消息,接收完成   Text=>消息为明文格式
                if (result.MessageType == WebSocketMessageType.Text && !result.CloseStatus.HasValue)
                {
                    var msgString = Encoding.UTF8.GetString(buffer);
                    _logger.LogInformation($"Websocket client ReceiveAsync message {msgString}.");
                    var message = JsonConvert.DeserializeObject <Message>(msgString);
                    message.SendClientId = webSocket.Id;
                    MessageRoute(message);
                }
            }while (!result.CloseStatus.HasValue);
            WebsocketClientCollection.Remove(webSocket);
            _logger.LogInformation($"Websocket client closed.");
        }
Example #29
0
 // Use this for initialization
 void Start()
 {
     Debug.Log("TFListener Starting");
     wsc = GameObject
           .Find("WebsocketClient").GetComponent <WebsocketClient>();
     wsc.Subscribe(topic, "std_msgs/String", 0, (success) => { this.subscribed = success; });
 }
Example #30
0
        static void OnCommand(dynamic Message, WebsocketClient Client)
        {
            Console.WriteLine("Got a command");
            string        data  = Message.data;
            List <string> argus = Library.stringParse(data);

            Console.WriteLine(argus);
            if (argus.Count == 3)
            {
                if (argus[2] == "uri")
                {
                    argus[1] = Library.PathToURI(argus[1]);
                }
            }
            string message = null;

            try
            {
                Process.Start(argus[0], argus[1]);
                message = "The Command Was Successful";
            }catch (Exception err)
            {
                message = $"The Command UnSuccessful \n {err}";
            }
            Message msg = new Message {
                message = message, from = "shell"
            };

            Client.Send(JsonConvert.SerializeObject(msg));
        }