示例#1
0
        private void sendMessages(int customerId, string orderId, string name)
        {
            chatMessage message = new chatMessage(customerId, int.Parse(orderId), 0, " היי " + name + " , ");

            message.addMessage();
            message.messageText = " הזמנתך שמספרו הוא " + orderId + " בוצעה בהצלחה ";
            message.addMessage();
        }
示例#2
0
        private void sendRegMessage(int customerId, string orderId, string name)
        {
            chatMessage message = new chatMessage(customerId, int.Parse(orderId), 0, " היי " + name + " , ");

            message.addMessage();
            message.messageText = "ברכות על רישומך למערכת \n מספר הלקוח שלך הוא " + customerId;
            message.addMessage();
        }
示例#3
0
        private async void SendMessage_Clicked(object sender, EventArgs e)
        {
            var chatObj = new chatMessage {
                userMessage = entryMessage.Text, userName = user1.Name + " " + user1.Surname
            };
            await db.saveMessage(chatObj, rm.Key);

            entryMessage.Text = null;
        }
示例#4
0
 public int Post(chatMessage message)
 {
     if (message.messageText == "")
     {
         return(message.chatTakenCare());
     }
     else
     {
         return(message.addMessage());
     }
 }
示例#5
0
    public static void Add(chatMessage msg)
    {
        if (OmniNetwork.Dedicated)
            return;

        instance.log.Add(msg);
        instance.updateActiveMsgs(msg);
        instance.scrollPosition.y = 100 * instance.log.Count;
        instance.timer = 0;
        show = true;
        showInput = false;
    }
示例#6
0
        /// <summary>
        /// обработка выхода нового пользозвателя
        /// </summary>
        /// <param name="client"></param>
        /// <returns></returns>
        public async Task newClient(chatClient client)
        {
            onlineClients.Add(client);

            //формирование сообщения
            chatMessage chatMessage = new chatMessage();

            chatMessage.authCommand(client.user);
            chatMessage.text = "Вошел в чат";

            await broadcast(chatMessage);
        }
示例#7
0
 /// <summary>
 /// рассылка всем активным клиентам
 /// </summary>
 /// <param name="message"></param>
 /// <returns></returns>
 public async Task broadcast(chatMessage message)
 {
     foreach (chatClient client in onlineClients)
     {
         if (client.socket.State != WebSocketState.Open)
         {
             continue;
         }
         WebSocket socket = client.socket;
         string    json   = JsonConvert.SerializeObject(message);
         var       buffer = Encoding.UTF8.GetBytes(json);
         await socket.SendAsync(new ArraySegment <byte>(buffer), WebSocketMessageType.Text, false, CancellationToken.None);
     }
 }
示例#8
0
        private async Task Handler(HttpContext context, WebSocket webSocket, chatClientBuffer chatClientBuffer, IdbConnector connectionContext)
        {
            var buffer = new byte[4 * 1024];
            ArraySegment <byte>    answer = new ArraySegment <byte>(buffer);
            WebSocketReceiveResult result = await webSocket.ReceiveAsync(answer, CancellationToken.None);

            while (webSocket.State == WebSocketState.Open)
            {
                string answerstr = Encoding.UTF8.GetString(answer.Array, answer.Offset, result.Count);

                chatMessage mes = JsonConvert.DeserializeObject <chatMessage>(answerstr);
                parseByCommand(mes, webSocket, chatClientBuffer, connectionContext);

                result = await webSocket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None);
            }
        }
示例#9
0
        /// <summary>
        /// обработка выхода пользователя
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public async Task closeClient(chatUser user)
        {
            //закрываем сокет
            chatClient chatClient = onlineClients.Where(client => client.user.id == user.id).First();

            onlineClients = onlineClients.Where(client => client.user.id != user.id).ToList();
            using (chatMessage m = new chatMessage())
            {
                m.command    = chatPacket.Commands.CLOSE;
                m.text       = "Вышел из сети";
                m.type       = chatPacket.TypeMessage.SYSTEM;
                m.userSender = user;
                await broadcast(m);
            }
            //await chatClient.socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Normal Closure", CancellationToken.None);
        }
示例#10
0
        // GET: Chat
        public ActionResult send(string key, string message)
        {
            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri("http://127.0.0.1:18080");
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            chatMessage msg = new chatMessage();

            msg.content     = message;
            msg.doctorName  = Session["username"].ToString();
            msg.isPatient   = "";
            msg.patientName = "";

            var response = client.PostAsJsonAsync <chatMessage>("Epione_JEE-web/epione/messages/ques/send/" + key, msg);

            return(Json(new { result = "ok" }, JsonRequestBehavior.AllowGet));
        }
示例#11
0
        private async void button1_Click(object sender, EventArgs e)
        {
            //формируем сообщение
            chatMessage message = new chatMessage();
            string      text    = textBox1.Text;

            //если сообщение начинается с \, то это команда на смену статуса
            if (text[0] == '\\')
            {
                text = text.Substring(1);
                message.prepaireStatus(me, text);
            }
            else
            {
                message.prepaireMessage(me, text);
            }
            //оборачиваем сообщение и отправляем
            string json = JsonConvert.SerializeObject(message);
            await con.sendString(json);
        }
示例#12
0
        private async void button1_Click(object sender, EventArgs e)
        {
            //определяем себя
            chatUser me = new chatUser();

            me.login = loginBox.Text;
            chatPacket packet = new chatPacket();
            //готовим пакет на аутентификацию
            string strJson = JsonConvert.SerializeObject(packet.authCommand(me));

            //формируем коннектор
            c = new connector();
            //готовим параметры подключения
            Dictionary <string, object> d = new Dictionary <string, object>();

            d.Add("uri", new Uri("ws://localhost:64636/Chat"));
            //инициализируем подключение
            c.initialize(d);
            //открываем подключение
            await c.open();

            //отправляем подключение
            await c.sendString(strJson);

            //получаем ответ
            string message = await c.reciveString();

            //разворачиваем ответ
            chatMessage answer = JsonConvert.DeserializeObject <chatMessage>(message);

            //если получили ответ с guid то считаем что подключение удалось
            if (answer.userSender.id != Guid.Empty)
            {
                //открываем основную форму
                ((ChatForm)this.Owner).saveConnection(c, answer.userSender);
                this.Close();
            }
        }
示例#13
0
 public async Task saveMessage(chatMessage cm, string room)
 {
     await service.client.Child("Chats/" + room + "/Message").PostAsync(cm);
 }
示例#14
0
        /// <summary>
        /// обработчик сообщений
        /// </summary>
        /// <returns></returns>
        private async Task handler()
        {
            //определяем класс пользователей
            users = new userListAdapter(UserList);
            //сохраняем свое имя
            this.Text = this.Text + ":" + me.login;
            //если все нормально, крутим бесконечный цикл на обработку
            while (true)
            {
                if (con != null)
                {
                    //получаем строку от сервера
                    string json = await con.reciveString();

                    //преобразуем в объект
                    chatMessage messageObject = JsonConvert.DeserializeObject <chatMessage>(json);
                    //смотрим что за команда
                    switch (messageObject.command)
                    {
                    case (chatPacket.Commands.AUTH):
                    {
                        //при авторизации, добавляем пользователя в список
                        users.append(messageObject.userSender);
                        break;
                    }

                    case (chatPacket.Commands.CLOSE):
                    {
                        //при закрытии соединения, удаляем из списка
                        users.delete(messageObject.userSender);
                        break;
                    }

                    case (chatPacket.Commands.INFO):
                    {
                        //если пришло информационное сообщение, то смотрим от кого
                        if (messageObject.type == chatPacket.TypeMessage.SYSTEM)
                        {
                            //если от системы, то это значит что система дает список активных юзеров
                            //значит перезаполняем список
                            users.clear();
                            string          onlineUsersJson = messageObject.text;
                            List <chatUser> chatUsers       = JsonConvert.DeserializeObject <List <chatUser> >(onlineUsersJson);
                            foreach (chatUser user in chatUsers)
                            {
                                users.append(user);
                            }
                            continue;
                        }
                        else if (messageObject.type == chatPacket.TypeMessage.USER)
                        {
                            //если же информационное сообщение от пользователя, то значит он сменил статус
                            //обновим его
                            messageObject.text = "Сменил статус: '" + messageObject.text + "'";
                            users.updateUser(messageObject.userSender);
                        }
                        break;
                    }
                    }
                    //выводим сообщение
                    string outputMessage = messageObject.userSender.login.ToString() + ": " + messageObject.text + "\n";
                    MessageField.Text += outputMessage;
                }
                //проверка соединения. Если соединения нет, то запускаем авторизацию
                if (con.getStatus() != System.Net.WebSockets.WebSocketState.Open)
                {
                    Auth auth = new Auth();
                    auth.Owner = this;
                    auth.ShowDialog();
                }
            }
        }
示例#15
0
 public activeMessage(chatMessage msg)
 {
     g = new GUIContent(msg.msg);
     this.msg = msg;
     bounds = new Rect();
 }
示例#16
0
        private async void parseByCommand(chatMessage message, WebSocket webSocket, chatClientBuffer chatClientBuffer, IdbConnector connectionContext)
        {
            switch (message.command)
            {
            case (chatPacket.Commands.AUTH):
            {
                if (message.userSender.id == Guid.Empty)
                {
                    //получаем пользователей из БД
                    chatUser[] users = (chatUser[])await connectionContext.getData(message.userSender.login);

                    chatUser user;
                    //если это новый пользователь
                    if (users.Length == 0)
                    {
                        //даем ему guid
                        Guid id = Guid.NewGuid();
                        user    = new chatUser();
                        user.id = id;
                    }
                    else
                    {
                        //если пользователь не новый, то из запроса забираем его id
                        user = users[0];
                    }

                    //проверка на подключенного пользователя
                    chatClient client = chatClientBuffer.getClientByGuid(user.id);
                    //если пользователь уже был подключен
                    if (client != null)
                    {
                        if (client.socket.State == WebSocketState.Open)
                        {
                            //возвращаем пользователю его сообщение
                            await sendMessage(webSocket, message);

                            await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Пользователь уже в сети", CancellationToken.None);

                            return;
                        }
                        else
                        {
                            //если пользователь уже был в сети, но сокет не открыт, вырубаем его
                            message.userSender = user;
                            await chatClientBuffer.closeClient(message.userSender);
                        }
                    }
                    message.userSender = user;
                    //подключаем
                    await sendMessage(webSocket, message);

                    //отправим всех юзеров
                    chatMessage informationMessage = new chatMessage();
                    informationMessage.connectedUserList(message.userSender);
                    informationMessage.text = JsonConvert.SerializeObject(chatClientBuffer.getOnlineUsers());
                    await sendMessage(webSocket, informationMessage);

                    //добавление в клиенты
                    await chatClientBuffer.newClient(new chatClient(webSocket, message.userSender));
                }
                break;
            }

            case (chatPacket.Commands.SEND):
            {
                await chatClientBuffer.broadcast(message);

                break;
            }

            case (chatPacket.Commands.INFO):
            {
                //смена статуса
                //await chatClientBuffer.changeStatus(message.userSender, message.text);
                message.userSender.status = message.text;
                await chatClientBuffer.broadcast(message);

                connectionContext.Update(message.userSender);

                /*chatMessage informationMessage = new chatMessage();
                 * informationMessage.connectedUserList(message.userSender);
                 * informationMessage.text = JsonConvert.SerializeObject(chatClientBuffer.getOnlineUsers());
                 * await sendMessage(webSocket, informationMessage);*/
                break;
            }

            case (chatPacket.Commands.CLOSE):
            {
                await chatClientBuffer.closeClient(message.userSender);

                break;
            }

            default:
            {
                break;
            }
            }
        }
示例#17
0
 void updateActiveMsgs(chatMessage msg)
 {
     for (int i = 0; i < activeChat.Count; i++)
     {
         if (activeChat[i].msg.id == msg.id)
             activeChat.RemoveAt(i);
     }
     activeChat.Add(new activeMessage(msg));
 }
示例#18
0
 /// <summary>
 /// отправка сообщения
 /// </summary>
 /// <param name="webSocket"></param>
 /// <param name="message"></param>
 /// <returns></returns>
 async Task sendMessage(WebSocket webSocket, chatMessage message)
 {
     string json   = JsonConvert.SerializeObject(message);
     var    buffer = Encoding.UTF8.GetBytes(json);
     await webSocket.SendAsync(new ArraySegment <byte>(buffer), WebSocketMessageType.Text, false, CancellationToken.None);
 }