웹소캣에 대하여
- 작성자 :
- s***o
- 작성일 :
- 2020-09-10 19:23:27
- 조회수 :
- 2,763
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
대답해 주신 답변을 보고 소스코드를 살펴봐도 이해가 잘 안되서 다시 물어볼려고 합니다
말씀해주신 EgovMessengerMain.jsp의 processOpen()에서 send()를 이용해서 서버에 데이터를 넘겨주는것을 확인하고
usersServerEndPoint onMessage메소드 파라미터 message에서는 username이 제대로 넘어오는것을 확인했지만
userSession.getUserProperties().put("username", username);를 등록하기 전에
그 위에 userSession.getUserProperties().get("username"); 부분에서 username값을 찾지 못해
username = jsonObject.getString("username"); 이 부분에서 NullPointerException이 발생합니다
혹시 제가 놓치고 있는 부분을 알려주실 수 있나요?
@OnMessage
public void handleMessage(String message, Session userSession) throws IOException, EncodeException {
String username = (String) userSession.getUserProperties().get("username");
JsonObject jsonObject = Json.createReader(new StringReader(message)).readObject();
String connectionType = jsonObject.getString("connectionType");
if ("firstConnection".equals(connectionType) && username == null) {
// 맨 처음 접속 시,
// 사용자의 이름을 가져옴
username = jsonObject.getString("username");
LOGGER.info(username + " is entered.");
if (username != null && !isExisted(username)) {
userSession.getUserProperties().put("username", username);
for (Session session : connectedAllUsers) {
session.getBasicRemote().sendText(buildJsonUserData(getUsers()));
말씀해주신 EgovMessengerMain.jsp의 processOpen()에서 send()를 이용해서 서버에 데이터를 넘겨주는것을 확인하고
usersServerEndPoint onMessage메소드 파라미터 message에서는 username이 제대로 넘어오는것을 확인했지만
userSession.getUserProperties().put("username", username);를 등록하기 전에
그 위에 userSession.getUserProperties().get("username"); 부분에서 username값을 찾지 못해
username = jsonObject.getString("username"); 이 부분에서 NullPointerException이 발생합니다
혹시 제가 놓치고 있는 부분을 알려주실 수 있나요?
@OnMessage
public void handleMessage(String message, Session userSession) throws IOException, EncodeException {
String username = (String) userSession.getUserProperties().get("username");
JsonObject jsonObject = Json.createReader(new StringReader(message)).readObject();
String connectionType = jsonObject.getString("connectionType");
if ("firstConnection".equals(connectionType) && username == null) {
// 맨 처음 접속 시,
// 사용자의 이름을 가져옴
username = jsonObject.getString("username");
LOGGER.info(username + " is entered.");
if (username != null && !isExisted(username)) {
userSession.getUserProperties().put("username", username);
for (Session session : connectedAllUsers) {
session.getBasicRemote().sendText(buildJsonUserData(getUsers()));
A
안녕하세요.
표준프레임워크센터입니다.
공통컴포넌트 소스를 기준으로
맨 처음 접속시 로그인한 사용자의 이름을 가져오게 되는데
로그인한 사용자의 이름은 EgovMessengerMain.jsp에서 넘겨주고 있습니다.
따라서, EgovMessengerMain.jsp 에서 제대로 넘겨주는지 확인해보시고
EgovMessengerMain.jsp 에서 제대로 넘겨주지 못한다면
로그인 처리 시 정보들이 제대로 설정되는지 확인해보시기 바랍니다.
감사합니다.
표준프레임워크센터입니다.
공통컴포넌트 소스를 기준으로
맨 처음 접속시 로그인한 사용자의 이름을 가져오게 되는데
로그인한 사용자의 이름은 EgovMessengerMain.jsp에서 넘겨주고 있습니다.
따라서, EgovMessengerMain.jsp 에서 제대로 넘겨주는지 확인해보시고
EgovMessengerMain.jsp 에서 제대로 넘겨주지 못한다면
로그인 처리 시 정보들이 제대로 설정되는지 확인해보시기 바랍니다.
감사합니다.