diff --git a/src/main/kotlin/com/android/trisolarisserver/controller/GuestDocuments.kt b/src/main/kotlin/com/android/trisolarisserver/controller/GuestDocuments.kt index 6018943..560c2b1 100644 --- a/src/main/kotlin/com/android/trisolarisserver/controller/GuestDocuments.kt +++ b/src/main/kotlin/com/android/trisolarisserver/controller/GuestDocuments.kt @@ -18,11 +18,12 @@ import com.fasterxml.jackson.databind.ObjectMapper import org.springframework.core.io.FileSystemResource import org.springframework.http.HttpHeaders import org.springframework.http.HttpStatus -import org.springframework.http.MediaType import org.springframework.http.ResponseEntity import org.springframework.security.core.annotation.AuthenticationPrincipal import org.springframework.transaction.annotation.Transactional import org.springframework.web.bind.annotation.* +import org.springframework.http.MediaType +import jakarta.servlet.http.HttpServletResponse import org.springframework.web.multipart.MultipartFile import org.springframework.web.server.ResponseStatusException import java.time.OffsetDateTime @@ -126,13 +127,16 @@ class GuestDocuments( .map { it.toResponse(objectMapper) } } - @GetMapping("/stream") + @GetMapping("/stream", produces = [MediaType.TEXT_EVENT_STREAM_VALUE]) fun streamDocuments( @PathVariable propertyId: UUID, @PathVariable guestId: UUID, - @AuthenticationPrincipal principal: MyPrincipal? + @AuthenticationPrincipal principal: MyPrincipal?, + response: HttpServletResponse ): org.springframework.web.servlet.mvc.method.annotation.SseEmitter { requireRole(propertyAccess, propertyId, principal, Role.ADMIN, Role.MANAGER) + response.setHeader("Cache-Control", "no-cache") + response.setHeader("X-Accel-Buffering", "no") return guestDocumentEvents.subscribe(propertyId, guestId) }