Skip to content

Commit

Permalink
chat app with react ts
Browse files Browse the repository at this point in the history
  • Loading branch information
guma2k2 committed Dec 8, 2024
1 parent c9b0879 commit cc752cb
Show file tree
Hide file tree
Showing 16 changed files with 119 additions and 46 deletions.
Original file line number Diff line number Diff line change
@@ -1,23 +1,28 @@
//package com.backend.elearning.configuration;
//
//import org.springframework.context.annotation.Configuration;
//import org.springframework.messaging.simp.config.MessageBrokerRegistry;
//import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
//import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
//import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
//
//@Configuration
//@EnableWebSocketMessageBroker
//public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
//
// @Override
// public void registerStompEndpoints(StompEndpointRegistry registry) {
// registry.addEndpoint("/ws").withSockJS();
// }
//
// @Override
// public void configureMessageBroker(MessageBrokerRegistry registry) {
// registry.setApplicationDestinationPrefixes("/app");
// registry.enableSimpleBroker("/topic");
// }
//}
package com.backend.elearning.configuration;

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic"); // Topic for broadcasting
config.setApplicationDestinationPrefixes("/app"); // Prefix for client requests
}

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws") // Plain WebSocket endpoint
.setAllowedOrigins("*"); // Allow frontend origin

registry.addEndpoint("/sockjs/ws") // SockJS fallback endpoint
.setAllowedOrigins("*")
.withSockJS();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.backend.elearning.domain.chat;

public class ChatService {
}
25 changes: 25 additions & 0 deletions src/main/java/com/backend/elearning/domain/chat/Message.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.backend.elearning.domain.chat;

import java.time.LocalDateTime;

public class Message {
private String sender;
private String content;

// Getters and Setters
public String getSender() {
return sender;
}

public void setSender(String sender) {
this.sender = sender;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.backend.elearning.domain.chat;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.DestinationVariable;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;

@Controller
public class MessageController {
private final SimpMessagingTemplate messagingTemplate;

public MessageController(SimpMessagingTemplate messagingTemplate) {
this.messagingTemplate = messagingTemplate;
}
@MessageMapping("/chat/{roomId}") // Match room-specific endpoints
public void sendMessage(@DestinationVariable String roomId, Message message) {
// Broadcast message to room-specific topic
messagingTemplate.convertAndSend("/topic/rooms/" + roomId, message);
}

public static class Message {
private String sender;
private String content;

// Getters and setters
public String getSender() {
return sender;
}

public void setSender(String sender) {
this.sender = sender;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
package com.backend.elearning.domain.classroom;

import com.backend.elearning.domain.common.CustomAuditingEntityListener;
import com.backend.elearning.domain.course.Course;
import com.backend.elearning.domain.lecture.Lecture;
import com.backend.elearning.domain.meeting.Meeting;
import com.backend.elearning.domain.quiz.Quiz;
import com.backend.elearning.reference.Reference;
import com.backend.elearning.domain.reference.Reference;
import jakarta.persistence.*;
import lombok.*;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,15 @@
import com.backend.elearning.domain.referencefile.ReferenceFileService;
import com.backend.elearning.domain.referencefile.ReferenceFileVM;
import com.backend.elearning.exception.NotFoundException;
import com.backend.elearning.reference.Reference;
import com.backend.elearning.reference.ReferenceGetVM;
import com.backend.elearning.domain.reference.Reference;
import com.backend.elearning.domain.reference.ReferenceGetVM;
import com.backend.elearning.utils.Constants;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

import static com.backend.elearning.utils.DateTimeUtils.convertLocalDateTimeToMonthYearText;
import static com.backend.elearning.utils.DateTimeUtils.convertLocalDateTimeToString;

@Service
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.backend.elearning.reference;
package com.backend.elearning.domain.reference;

import com.backend.elearning.domain.classroom.Classroom;
import com.backend.elearning.domain.common.AbstractAuditEntity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package com.backend.elearning.reference;
package com.backend.elearning.domain.reference;

import com.backend.elearning.domain.meeting.MeetingPostVM;
import com.backend.elearning.domain.meeting.MeetingService;
import com.backend.elearning.domain.meeting.MeetingVM;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.backend.elearning.reference;
package com.backend.elearning.domain.reference;

import com.backend.elearning.domain.common.Event;
import com.backend.elearning.domain.common.EventType;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.backend.elearning.reference;
package com.backend.elearning.domain.reference;

public record ReferencePostVM(
String description,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.backend.elearning.reference;
package com.backend.elearning.domain.reference;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.backend.elearning.reference;
package com.backend.elearning.domain.reference;

public interface ReferenceService {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.backend.elearning.reference;
package com.backend.elearning.domain.reference;

import com.backend.elearning.domain.classroom.Classroom;
import com.backend.elearning.domain.classroom.ClassroomRepository;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.backend.elearning.reference;
package com.backend.elearning.domain.reference;

public record ReferenceVM (
Long id,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.backend.elearning.domain.referencefile;

import com.backend.elearning.domain.classroom.Classroom;
import com.backend.elearning.reference.Reference;
import com.backend.elearning.domain.reference.Reference;
import jakarta.persistence.*;
import lombok.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package com.backend.elearning.domain.referencefile;

import com.backend.elearning.reference.Reference;
import com.backend.elearning.reference.ReferenceRepository;
import com.backend.elearning.reference.ReferenceVM;
import com.backend.elearning.domain.reference.Reference;
import com.backend.elearning.domain.reference.ReferenceRepository;
import org.springframework.stereotype.Service;

import java.util.List;
Expand Down

0 comments on commit cc752cb

Please sign in to comment.