웹소켓 - onMessage
- 작성자 :
- 작*자
- 작성일 :
- 2022-06-30 15:58:21
- 조회수 :
- 1,329
- 구분 :
- 개발환경 / 3.10
- 진행상태 :
- 완료
Q
/**
* 메시지 전달 함수
* @param incomingMessage 들어오는 메시지
* @param userSession 사용자 session
* @param room room Id
* @throws IOException
* @throws EncodeException
*/
@OnMessage
public void handleMessage(Message incomingMessage, Session userSession, @PathParam("room") final String room) throws IOException, EncodeException {
HashMap<String, Object> resultMap = new HashMap<String, Object>();
ChatMessage incomingChatMessage = (ChatMessage)incomingMessage;
ChatMessage outgoingChatMessage = new ChatMessage();
String username = (String) userSession.getUserProperties().get("username");
if (username == null) {
username = incomingChatMessage.getMessage();
if (username != null) {
userSession.getUserProperties().put("username", username);
}
synchronized (chatroomUsers) {
for (Session session : chatroomUsers){
session.getBasicRemote().sendObject(new UsersMessage(getUsers()));
}
}
} else {
outgoingChatMessage.setName(username);
outgoingChatMessage.setMessage(incomingChatMessage.getMessage());
for (Session session : chatroomUsers){
session.getBasicRemote().sendObject(outgoingChatMessage);
}
resultMap.put("name", username);
resultMap.put("room", room);
resultMap.put("message", incomingChatMessage.getMessage());
chatService.insertMessage(resultMap);
}
}
위 소스에서
chatService.insertMessage(resultMap);
service 단으로 전송하여 DB에 해당 resultMap 값을 실시간 대화 테이블에 저장하려고 합니다.
resultMap에 넘어가는 데이터 값들은 모두 null이 안들어가요
근데 여기서 자꾸 nullpointerexception 오류가 나는데 해결할수 있는 방법이 있을까요?
chatService 변수는 서비스 호출 해주었습니다.
* 메시지 전달 함수
* @param incomingMessage 들어오는 메시지
* @param userSession 사용자 session
* @param room room Id
* @throws IOException
* @throws EncodeException
*/
@OnMessage
public void handleMessage(Message incomingMessage, Session userSession, @PathParam("room") final String room) throws IOException, EncodeException {
HashMap<String, Object> resultMap = new HashMap<String, Object>();
ChatMessage incomingChatMessage = (ChatMessage)incomingMessage;
ChatMessage outgoingChatMessage = new ChatMessage();
String username = (String) userSession.getUserProperties().get("username");
if (username == null) {
username = incomingChatMessage.getMessage();
if (username != null) {
userSession.getUserProperties().put("username", username);
}
synchronized (chatroomUsers) {
for (Session session : chatroomUsers){
session.getBasicRemote().sendObject(new UsersMessage(getUsers()));
}
}
} else {
outgoingChatMessage.setName(username);
outgoingChatMessage.setMessage(incomingChatMessage.getMessage());
for (Session session : chatroomUsers){
session.getBasicRemote().sendObject(outgoingChatMessage);
}
resultMap.put("name", username);
resultMap.put("room", room);
resultMap.put("message", incomingChatMessage.getMessage());
chatService.insertMessage(resultMap);
}
}
위 소스에서
chatService.insertMessage(resultMap);
service 단으로 전송하여 DB에 해당 resultMap 값을 실시간 대화 테이블에 저장하려고 합니다.
resultMap에 넘어가는 데이터 값들은 모두 null이 안들어가요
근데 여기서 자꾸 nullpointerexception 오류가 나는데 해결할수 있는 방법이 있을까요?
chatService 변수는 서비스 호출 해주었습니다.
환경정보
-
- OS 정보 : window 10
- 표준프레임워크 버전 : 3.10
- JDK(JRE) 정보 :
- WAS 정보 : tomcat
- DB 정보 : cubird
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크 센터입니다.
질문하신 내용과 같은 서비스는
WebSocket과 SockJS 라이브러리와 STOMP를 이용하여
구현하실 수 있으며 표준프레임워크에서는
WebSocket, sockJS, STOMP 와 관련된 예제코드를
제공하고 있으니 참고하시기 바랍니다.
http://www.egovframe.go.kr/EgovRunEnvReleaseEdu.jsp?menu=3&submenu=1&leftsub=5
보다 자세한 내용은 스프링에서 제공하는 문서에 자세히 기술되어 있습니다.
https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#websocket
https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#websocket-fallback-cors
감사합니다.
표준프레임워크 센터입니다.
질문하신 내용과 같은 서비스는
WebSocket과 SockJS 라이브러리와 STOMP를 이용하여
구현하실 수 있으며 표준프레임워크에서는
WebSocket, sockJS, STOMP 와 관련된 예제코드를
제공하고 있으니 참고하시기 바랍니다.
http://www.egovframe.go.kr/EgovRunEnvReleaseEdu.jsp?menu=3&submenu=1&leftsub=5
보다 자세한 내용은 스프링에서 제공하는 문서에 자세히 기술되어 있습니다.
https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#websocket
https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#websocket-fallback-cors
감사합니다.