Exemplo n.º 1
0
        /// <inheritdoc />
        protected override Task OnMessageReceivedAsync(IWebSocketContext context, byte[] rxBuffer,
                                                       IWebSocketReceiveResult rxResult)
        {
            if (!this.DetourClients.TryGetValue(context.Id, out DetourClient client))
            {
                return(null);
            }

            string message = Encoding.UTF8.GetString(rxBuffer);

            Console.WriteLine($"[{Enum.GetName(typeof(ClientTypeEnum), this.ClientType)}] -> {message}.");

            client.WebSocket.Send(message);
            this._formRef.AddMessageToDataGridView(this.ClientType, message);



            if (message.Contains("disconnecting"))
            {
                this.SendAsync(context, "4\"primus::server::close\"");
                client.WebSocket.Close();
                this.CloseAsync(context);

                this.DetourClients.TryRemove(context.Id, out DetourClient removedClient);
            }


            if (message.StartsWith("4{") && message.Contains("sendMessage"))
            {
                var messageObject = JsonConvert.DeserializeObject <JObject>(message.Substring(1, message.Length - 1));

                if (messageObject.TryGetValue("data", out JToken data))
                {
                    ProtocolBuilderManager.BuildSendMessage(data.ToString());
                }
            }

            return(Task.CompletedTask);
        }
Exemplo n.º 2
0
        private void EventCallback(object sender, SendEventArg e)
        {
            var client = (DetourClient)sender;

            var context = this.ActiveContexts.FirstOrDefault(x => x.Id == client.ContextId);

            Console.WriteLine(e.Message);

            this._formRef.AddMessageToDataGridView(this.ClientType, e.Message);


            if (e.Message.StartsWith("4{"))
            {
                var messageObject = JsonConvert.DeserializeObject <JObject>(e.Message.Substring(1, e.Message.Length - 1));

                if (messageObject.TryGetValue("_messageType", out JToken messageName))
                {
                    ProtocolBuilderManager.BuildMessage(messageName.ToString(), e.Message.Substring(1, e.Message.Length - 1));
                }
            }


            this.SendAsync(context, e.Message);
        }