Esempio n. 1
0
        private async Task Echo(IApplicationBuilder app, HttpContext context, WebSocket webSocket)
        {
            var scopeFactory = app.ApplicationServices.GetRequiredService <IServiceScopeFactory>();

            using (var scope = scopeFactory.CreateScope())
            {
                chatSessionsController = scope.ServiceProvider.GetRequiredService <ChatSessionsController>();
                _context = scope.ServiceProvider.GetRequiredService <MovieMessengerContext>();
                // rest of your code
                var buffer = new byte[1024 * 4];
                WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None);

                string   SentData = System.Text.Encoding.Default.GetString(buffer);
                string[] names    = SentData.Split('/');
                string   message  = names.Last();
                while (!result.CloseStatus.HasValue)
                {
                    await chatSessionsController.UpdateChat(names.First(), names[1], names.First() + ": " + message);

                    try
                    {
                        string chatTo = names[1] + "%7C" + names.First();
                        await  chatSockets[chatTo].SendAsync(new ArraySegment <byte>(buffer, 0, result.Count), result.MessageType, result.EndOfMessage, CancellationToken.None);
                    }
                    catch

                    {
                        //bool g = _context.ChatSession.Any(e => e.ToString() == relation); ;
                        //do work here to automatically save the chat to the receviers account.
                        if (chatSessionsController.ChatSessionExists(names[1] + " " + names.First()))
                        {
                            await chatSessionsController.UpdateChat(names[1], names.First(), names.First() + ": " + message);

                            /*
                             * ChatSession chat = _context.ChatSession.Single(e => e.ToString() == names[1]() + " " + names.First());
                             * chat.Chat = chat.Chat + "<br>" + names.First() + ": " + System.Text.Encoding.Default.GetString(buffer);
                             * _context.ChatSession.Update(chat);
                             * await _context.SaveChangesAsync();
                             */
                        }
                        else
                        {
                            ChatSession chat = new ChatSession(names[1], names.First(), names.First() + ": " + message);
                            await chatSessionsController.Create(chat);
                        }
                    }

                    result = await webSocket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None);
                }
                await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);

                chatSockets.Remove(names.First() + "%7C" + names[1]);
            }
        }
Esempio n. 2
0
 public AccountsController(MovieMessengerContext context)
 {
     _context = context;
 }
Esempio n. 3
0
 public MessagesController(MovieMessengerContext context)
 {
     _context = context;
 }
Esempio n. 4
0
 public LoginsController(MovieMessengerContext context)
 {
     _context = context;
 }
 public ChatSessionsController(MovieMessengerContext context)
 {
     _context = context;
     Startup.chatSessionsController = this;
 }