RoomChatMessages { get; set; }
+
     public string DbPath { get; }
 
     public ChattingContext()
@@ -30,9 +34,9 @@ public class Room
 
     public string? RoomJoinCode { get; set; }
 
-    // koble tilsammen ChatMessage til Room
+    // koble tilsammen RoomChatMessage til Room
     // https://www.entityframeworktutorial.net/efcore/one-to-many-conventions-entity-framework-core.aspx
-    public ChatMessage? ChatMessage { get; set; }
+    public RoomChatMessage? RoomChatMessage { get; set; }
 
 }
 
@@ -44,4 +48,20 @@ public class ChatMessage
 
     public string? User { get; set; }
     public string? Message { get; set; }
+}
+
+public class RoomChatMessage
+{
+    [Key]
+    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+    public string? Id { get; set; }
+
+    public string? User { get; set; }
+    public string? Message { get; set; }
+    public string? RoomId { get; set; }
+
+    // koble tilsammen RoomChatMessage til Room
+    // https://www.entityframeworktutorial.net/efcore/one-to-many-conventions-entity-framework-core.aspx
+    public Room? Room { get; set; }
+
 }
\ No newline at end of file
diff --git a/Pages/Chat.razor b/Pages/Chat.razor
index 8fcd58b..8ca4232 100644
--- a/Pages/Chat.razor
+++ b/Pages/Chat.razor
@@ -1,13 +1,119 @@
 @page "/chat/{room?}"
+@using Microsoft.AspNetCore.SignalR.Client;
+@using LiveChat.Models;
+@inject NavigationManager Navigation
+
+Chat room
 
-Chat room 
 
 @if(Room is null or "")
 {
-     Ingen rom ble avgitt. Lag et rom og putt det i URLen.
+     Fant ikke rom i URL. Lag et rom og putt det i URLen.
 }
 
+Rom @Room
+
+Din tilkoblings ID: @connectionId. Brukernavn: @username
+
+@foreach (var msg in msgs)
+{
+    @msg
+}
+
+
+
 @code {
     [Parameter]
     public string? Room { get; set; }
+
+    private HubConnection? hubConnection;
+
+    private List msgs = new List();
+
+    private bool ErViInne = false;
+
+    private string connectionId = "";
+
+    private string username = "";
+
+    private MessageModel messageModel = new MessageModel() { User = "Something", Message = "" };
+
+
+    protected override async Task OnInitializedAsync()
+    {
+        hubConnection = new HubConnectionBuilder()
+            .WithUrl(Navigation.ToAbsoluteUri("/chathub"))
+            .Build();
+
+        await hubConnection.StartAsync();
+
+        // lag tilfeldig navn
+        username = "Bruker" + new Random().Next(1, 1000);
+
+        if (Room != null || Room != "")
+        {
+            // sjekk om rom finnes
+            // hvis ikke, lag et rom
+            using (var db = new ChattingContext())
+            {
+                var room = db.Rooms.FirstOrDefault(r => r.RoomJoinCode == Room);
+                if (room is null)
+                {
+                    Console.WriteLine("Lager rom?!?");
+                    room = new Room() { RoomJoinCode = Room };
+                    db.Rooms.Add(room);
+                    db.SaveChanges();
+                }
+            }
+        }
+
+
+        // bli med i rom
+        await hubConnection.SendAsync("JoinRoom", Room, username);
+        ErViInne = true;
+        messageModel.User = username;
+
+        hubConnection.On("ReceiveMessage", (user, message) =>
+        {
+            var encodedMsg = $"{user}: {message}";
+            msgs.Add(encodedMsg);
+            InvokeAsync(StateHasChanged);
+        });
+    }    
+
+    private async Task HandleSubmit()
+    {
+        messageModel.User = username;
+        await hubConnection.SendAsync("SendMessageRoom", messageModel.User, messageModel.Message, Room);
+    }
+
+    public bool IsConnected =>
+        hubConnection?.State == HubConnectionState.Connected;
+
+    public async ValueTask DisposeAsync()
+    {
+        if (hubConnection is not null)
+        {
+            await hubConnection.DisposeAsync();
+        }
+    }
 }
diff --git a/Pages/Index.razor b/Pages/Index.razor
index 3414a33..baf05ff 100644
--- a/Pages/Index.razor
+++ b/Pages/Index.razor
@@ -12,11 +12,11 @@
 
     
         
-        
 
         
@@ -101,6 +101,7 @@ else
             await InvokeAsync(StateHasChanged);
         }
 
+
         hubConnection.On("ReceiveMessage", (user, message) =>
         {
             var encodedMsg = $"{user}: {message}";
diff --git a/wwwroot/css/site.css b/wwwroot/css/site.css
index 76d92cb..6830378 100644
--- a/wwwroot/css/site.css
+++ b/wwwroot/css/site.css
@@ -167,4 +167,13 @@ a, .btn-link {
     padding: 0.5rem;
     border-radius: 0.25rem;
     transition: 0.25s all ease-in-out;
+}
+
+/* bli kvitt med punkt på valideringsfeil */
+
+.validation-errors > .validation-message {
+    list-style-type: none;
+    margin: 0;
+    margin-left: -31px;
+    padding: 0;
 }
\ No newline at end of file