묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
스프링 websocket handler presend 질문 있습니다.
public Message<?> preSend(Message<?> message, MessageChannel channel) { log.info("presend 실행은 되는지"); StompHeaderAccessor accessor = StompHeaderAccessor.wrap(message); log.info("테스트{}",accessor.getCommand()); // // 메시지의 구독 명령이 CONNECT인 경우에만 실행 if (StompCommand.CONNECT.equals(accessor.getCommand())) { StompHeaderAccessor headerAccessor = StompHeaderAccessor.wrap(message); log.info("구독 명령이 떨어졌어{}",headerAccessor.getNativeHeader("test")); } return message; }위 코드처럼 실행했을 시 accessor.getCommand()가 connect거나 disconnect면 log.info("presend 실행은 되는지"); StompHeaderAccessor accessor = StompHeaderAccessor.wrap(message); log.info("테스트{}",accessor.getCommand());이것이 2번 씩 출력되는데 원래 이런건지 아니면 제가 코딩을 잘못했는지 질문있습니다.
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
web socket 프론트엔드 코드 질문
views/index.html 코드에서, WebSocket 인스턴스를 만들어 서버와 통신하는 코드에서, WebScoket을 따로 require나 import를 안했는데 new WebSocket코드를 사용할 수 있는데, 어떻게 가능한것일까요? <views/index.html> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>GIF 채팅방</title> </head> <body> <div>F12를 눌러 console 탭과 network 탭을 확인하세요.</div> <script> const webSocket = new WebSocket("ws://localhost:8005"); webSocket.onopen = function () { console.log("서버와 웹소켓 연결 성공!"); }; webSocket.onmessage = function (event) { console.log(event.data); webSocket.send("클라이언트에서 서버로 답장을 보냅니다"); }; </script> </body> </html>
-
미해결Slack 클론 코딩[실시간 채팅 with React]
socket.io 에 대한 간단한 질문
안녕하세요 선생님! 강의에서 사용한 socket.io에 대해 문득 궁금한 점이 들어 질문 남기게 되었습니다. 기존에 Websocket API 등장 이전에는 Ajax 통신 등으로 실시간 정보를 받아오기 위해 매번 요청을 보내야 했고, 그 과정에서 좀 더 효율성을 위해 Long Polling 또는 Streaming 방식 등이 등장했다고 이해했습니다. 반면 Websocket 의 경우 한 번 연결을 맺으면 그 연결을 유지하기 때문에 실시간 정보를 다루기 편하고 클라이언트와 서버간 양방향 통신 역시 용이하다고 소개된 것 같습니다, 이때 클라이언트와 서버 간의 통신은 등록한 이벤트 핸들러(?)를 통해 해당 이벤트가 감지되면 데이터를 내보내주는 등의 반응을 한다라고 이해했습니다. 여기서 드는 간단한 의문은 1) 클라이언트의 HTTP 요청 -> 서버가 수신 -> 서버에서 데이터 처리 -> 클라이언트에게 HTTP 응답 -> 연결 해제 2) 클라이언트에서 socket 연결 요청 -> 서버와 연결 -> 클라이언트에서 이벤트 발생 -> 서버가 감지 -> 서버에서 데이터 처리 후 전달 -> 다음 이벤트 대기... 와 같은 과정으로 이해가 되는데 HTTP요청이나 이벤트 발생 시 모두 서버에서 데이터를 처리해서 보내주는 로직은 동일한 것 같은데, 서버에서 매번 HTTP 요청을 받아 응답을 보내주는 것 보다 이벤트 핸들러(사실 이벤트가 맞는지는 확실히 모르겠습니다) 방식으로 처리하는 것이 효율이 더 좋은건가요? 글을 작성하다 보니 내용이 좀 두서가 없는 것 같은데 질문의 요지는,클라이언트에서 서버로 요청을 보내고 이에 서버가 데이터를 보내주는 것은 둘 모두 동일한 로직인 듯 한데 이 요청이 HTTP 요청인가 아닌가에 따라 서버에 걸리는 부하의 차이가 꽤 큰 것 인지 궁금합니다.번외)아 그리고 선생님이 사용하시는 에디터에서 주로 함수의 인자에 음영처리되어 자동으로 데이터 타입이 표시가 되던데,이는 Webstorm 에디터만의 기능인가요? 아니면 VSCode에서도 이를 적용할 수 있는 Extension이 있을까요?감사합니다.