Spring Bootチャットサーバ-5強SSEプロトコルとTextEventStreamの作成


ChatController.java
package com.cos.chatapp;

import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.core.scheduler.Schedulers;

import java.time.LocalDateTime;

@RequiredArgsConstructor
@RestController // 데이터 리턴 서버
public class ChatController {

    private final ChatRepository chatRepository;

    @GetMapping(value = "/sender/{sender}/receiver/{receiver}", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<Chat> getMsg(@PathVariable String sender, @PathVariable String receiver) {
        return chatRepository.mFindBySender(sender, receiver)
                .subscribeOn(Schedulers.boundedElastic());
    }

    @PostMapping(value = "/chat")
    public Mono<Chat> setMsg(@RequestBody Chat chat) { // Mono는 데이터를 한번만 리턴한다. 계속할거면 Flux
        chat.setCreatedAt(LocalDateTime.now());
        return chatRepository.save(chat);
    }
}
郵便配達人として郵便招待を出した.

ブラウザ接続ビュー

@RequiredArgsConstructor
パーティションの説明
@NoArgConstructorパラメータのないデフォルトジェネレータの作成
Student std = new Student();
@RequiredArgConstructor finalまたは@NonNullの作成者のみを参照
Student std = new Student(1L);
@AllArgConstructorすべてのフィールド値をパラメータとするジェネレータを作成
student std=new student(1 L、「洪吉童」、20);
https://invicr.github.io/2020/03/31/Spring-NoArgsConstructor-RequiredArgsConstructor-AllArgsConstructor/
@RestController
コントローラクラスに@RestControllerを追加すると、コントローラクラスサブメソッドに@ResponseBody操作を追加することなく文字列やJSONなどを送信できます.
https://doctorson0309.tistory.com/664
ResponseBody
@RequestBody/@ResponseBodyをクリーンアップします.
サーバに必要なデータを要求するためにクライアントからサーバにJSONデータを送信すると、サーバは@Request Body操作を使用してHTTP要求本文の値をJavaオブジェクトに変換し、オブジェクトに格納します.
サーバからクライアントに応答データを転送するには、@ResponseBody宣言を使用してJavaオブジェクトをHTTP応答本文のオブジェクトに変換し、クライアントに送信します.
https://cheershennah.tistory.com/179
PathVariable
https://ocblog.tistory.com/46