에러

EventSource 에러

EventSource's response has a Content-Type specifying an unsupported type;

 

이라는 에러가 발생했습니다. 프론트로부터 위와 같은 에러를 전달 받았습니다.

이벤트 데이터를 저장할 때 원본 객체를 문자열로 변환하지 않고 그대로 저장할 경우 EventSteam 연결이 즉시 종료되는 현상이 확인되었습니다. 그래서 여기저기 물어보고 구글링 해서 json 객체를 문자열로 변환하는 방법을 찾았습니다.

 

json 마샬링 언마샬링 하기에 대해서 아래글을 참조하세요.

 

JSON 마샬링/언마샬링 하기 Part1

JOSN 마샬링/언마샬링에 대해서 말씀 드리려고 합니다. 설명에 앞서 용어에 대한 정리를 간략하게 해보겠습니다. JSON (JavaScript Object Notation) JSON에 대한 정의는 아래와 같습니다. JSON (JavaScript Object

beyondj2ee.tumblr.com

 

 

객체직렬화 하기

@Async // 비동기 처리를 위한 어노테이션
@Transactional
public void send(Member receiver, Member sender, NotificationType notificationType, String content, RedirectionType type, Long typeId, Long postId) {
    Notification notification = notificationRepository.save(new Notification(receiver, notificationType, content, type, typeId, postId, sender));
    String memberId = String.valueOf(receiver.getId());

    Map<String, SseEmitter> sseEmitters = emitterRepository.findAllEmitterStartWithByMemberId(memberId);
    sseEmitters.forEach(
            (key, emitter) -> {
                emitterRepository.saveEventCache(key, notification);
                Gson gson = new Gson();
                String data = gson.toJson(notification);
                sendToClient(emitter, key, data);
            }
    );
}

 

Gson을 사용해서 객체직렬화를 하였습니다.

 

Gson gson = new Gson();
String data = gson.toJson(notification);

아직 프론트랑 연결은 안해봤는데 일단 string 형태로 보내니까 json 형태라는 에러는 안뜰거라고 예상합니다.

 

 

 

참고 자료

 

Google의 Gson 라이브러리를 사용한 Java 객체 직렬화

이 게시물은 Java 객체의 직렬화 및 역직렬화 Google의 Gson 라이브러리를 사용합니다. 오늘날 거의 모든 RESTful 웹 서비스는 XML 대신 JSON 데이터를 사용하고 생성합니다. 불행히도 Java SE는 JSON을 Java O

www.techiedelight.com

 

+ Recent posts