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]); } }
public AccountsController(MovieMessengerContext context) { _context = context; }
public MessagesController(MovieMessengerContext context) { _context = context; }
public LoginsController(MovieMessengerContext context) { _context = context; }
public ChatSessionsController(MovieMessengerContext context) { _context = context; Startup.chatSessionsController = this; }