Skip to content

Commit

Permalink
Merge pull request #33 from VOM-Project/feature/signaling
Browse files Browse the repository at this point in the history
feat: signaling 서버 완료
  • Loading branch information
Ojimin authored Jun 10, 2024
2 parents b6733f9 + 00b114f commit eda53f1
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,13 @@
import vom.spring.domain.webcam.dto.WebcamResponseDto;
import vom.spring.domain.webcam.service.WebcamServcie;

@Tag(name = "화상채팅(시그널링) API", description = "유저 API 명세서")
@Tag(name = "화상채팅(시그널링) API", description = "화상채팅 API 명세서")
@RestController
@RequiredArgsConstructor
@Slf4j
//db에 webcam 업데이트 로직 필요
public class WebcamController {
private final WebcamServcie webcamServcie;
private final SimpMessagingTemplate messagingTemplate;
// private final SimpMessagingTemplate messagingTemplate;
/**
* 방 생성
*/
Expand All @@ -49,60 +48,64 @@ public ResponseEntity<WebcamResponseDto.CreateWebcamDto> createWebcamRoom(@Reque
/**
* offer 정보를 주고받기 - step 5에서 offer를 받고 구독하고 있는 client들에게 전송
*/
// @MessageMapping("/peer/offer/{camKey}/{webcamId}") //해당 경로로 메시지가 날아오면 해당 메서드 실행해서 리턴, /app/~~이런식으로 전달된다
// @SendTo("/topic/peer/offer/{camKey}/{webcamId}")
// //camKey : 각 요청하는 캠의 key , roomId : 룸 아이디 =>룸 id를 webcam id로 수정
// public String PeerHandleOffer(@Payload String offer, @DestinationVariable(value = "webcamId") String webcamId, @DestinationVariable(value = "camKey") String camKey) {
// log.info("[OFFER] {} : {}", camKey, offer);
//// messagingTemplate.convertAndSend("/topic/peer/offer/" +message.getWebcamId(), message);
// return offer;
// }
@MessageMapping("/peer/offer/{webcamId}") //해당 경로로 메시지가 날아오면 해당 메서드 실행해서 리턴, /app/~~이런식으로 전달된다
//camKey : 각 요청하는 캠의 key , roomId : 룸 아이디 =>룸 id를 webcam id로 수정
public void PeerHandleOffer(@Payload Message message, SimpMessageHeaderAccessor headerAccessor) {
log.info("offer받은 webcamId:"+ message.getWebcamId()+"offer받은 sender:"+ message.getSender());
messagingTemplate.convertAndSend("/topic/peer/offer/" +message.getWebcamId(), message);
@SendTo("/topic/peer/offer/{webcamId}")
public Message PeerHandleOffer(Message message, @DestinationVariable(value = "webcamId") String webcamId) {
log.info("offer 메세지 왔다, sender: {}, 전달할 webcamId는: {}", message.getSender(),message.getWebcamId());
// messagingTemplate.convertAndSend("/topic/peer/offer/" +message.getWebcamId(), message);
return message;
}

/**
* iceCandidate 정보를 주고 받기 위한 websocket
*/
@MessageMapping("/peer/iceCandidate/{webcamId}")
public void PeerHandleIceCandidate(@Payload Message message, SimpMessageHeaderAccessor headerAccessor) {
log.info("ice받은 webcamId:"+ message.getWebcamId()+"ice받은 sender:"+ message.getSender());
messagingTemplate.convertAndSend("/topic/peer/iceCandidate/" + message.getWebcamId(), message);
@SendTo("/topic/peer/iceCandidate/{webcamId}")
public Message PeerHandleIceCandidate(Message message, @DestinationVariable(value = "webcamId") String webcamId) {
log.info("[ICECANDIDATE] sender: {}, candidate 정보: {}, 전달할 webcamId: {}", message.getSender(), message.getIce(), message.getWebcamId());
// messagingTemplate.convertAndSend("/topic/peer/iceCandidate/" + message.getWebcamId(), message);
return message;
}

/**
* answer 정보 주고받기
*/
// @MessageMapping("/peer/answer/{webcamId}")
// @SendTo("/topic/peer/answer/{camKey}/{webcamId}")
// public String PeerHandleAnswer(@Payload String answer, @DestinationVariable(value = "webcamId") String webcamId, @DestinationVariable(value = "camKey") String camKey) {
// log.info("[ANSWER] {} : {}", camKey, answer);
//// messagingTemplate.convertAndSend("/topic/peer/answer/" + message.getWebcamId(), message);
// return answer;
// }
@MessageMapping("/peer/answer/{webcamId}")
public void PeerHandleAnswer(@Payload Message message, SimpMessageHeaderAccessor simpMessageHeaderAccessor ) {
log.info("answer받은 webcamId:"+ message.getWebcamId()+"answer받은 sender:"+ message.getSender());
messagingTemplate.convertAndSend("/topic/peer/answer/" + message.getWebcamId(), message);
@SendTo("/topic/peer/answer/{webcamId}")
public Message PeerHandleAnswer(Message message, @DestinationVariable(value = "webcamId") String webcamId) {
log.info("[ANSWER] sender: {}, 전달할 곳 : {} ", message.getSender(), message.getAnswer());
// messagingTemplate.convertAndSend("/topic/peer/answer/" + message.getWebcamId(), message);
return message;
}

// /**
// * camKey 를 받기위해 신호를 보내는 webSocket
// */
// @Operation(summary = "camKey를 받기 위해 신호를 보냄", description = "client의 camKey 정보를 주고 받기 위해 신호를 보냅니다",
// responses = {
// @ApiResponse(responseCode = "201", description = "계정 생성 완료"),
// @ApiResponse(responseCode = "400", description = "존재하지 않은 직업, 존재하지 않은 주소",
// content = @Content(schema = @Schema(implementation = ErrorResponse.class))),
// @ApiResponse(responseCode = "409", description = "올바르지 않은 닉네임, 올바르지 않은 이메일",
// content = @Content(schema = @Schema(implementation = ErrorResponse.class)))
// })
/**
* camKey 를 받기위해 신호를 보내는 webSocket
*/
// @MessageMapping("/call/key")
// @SendTo("/topic/call/key")
// public String callKey(@Payload String message) {
// log.info("[Key] : {}", message);
// return message;
// }
//
// /**
// * 자신의 camKey 를 모든 연결된 세션에 보내는 webSocket
// */
// @Operation(summary = "camKey를 모든 연결된 세션에 보냄", description = "client의 camKey를 연결된 모든 peer에게 보냅니다",
// responses = {
// @ApiResponse(responseCode = "200", description = "계정 생성 완료"),
// @ApiResponse(responseCode = "400", description = "존재하지 않은 직업, 존재하지 않은 주소",
// content = @Content(schema = @Schema(implementation = ErrorResponse.class))),
// @ApiResponse(responseCode = "409", description = "올바르지 않은 닉네임, 올바르지 않은 이메일",
// content = @Content(schema = @Schema(implementation = ErrorResponse.class)))
// })

/**
* 자신의 camKey 를 모든 연결된 세션에 보내는 webSocket
*/
// @MessageMapping("/send/key")
// @SendTo("/topic/send/key")
// public String sendKey(@Payload String message) {
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/vom/spring/domain/webcam/domain/Message.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
public class Message {
@Enumerated(EnumType.STRING)
private Type type;
private Long webcamId;
private Long sender;
private String webcamId;
private String sender;
private Object offer;
private Object answer;
private Object ice;
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/vom/spring/global/config/WebConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ public void addInterceptors(InterceptorRegistry registry) {
"/api/auth/**",
"/api/members/join",
"/api/members/join/nickname",
"/topic/**",
"/app/**",
"/signaling",
"/",
"/swagger-ui/index.html",
"/swagger-ui.html",
Expand Down

0 comments on commit eda53f1

Please sign in to comment.