chat/WebChatServer.java > MODEL2

본문 바로가기
사이트 내 전체검색

MODEL2

chat/WebChatServer.java

페이지 정보

profile_image
작성자 관리자
댓글 0건 조회 656회 작성일 23-03-18 18:13

본문

package chat;


import java.io.IOException;

import java.util.Collections;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;


import javax.servlet.http.HttpServlet;

import javax.websocket.OnClose;

import javax.websocket.OnMessage;

import javax.websocket.OnOpen;

import javax.websocket.Session;

import javax.websocket.server.ServerEndpoint;


import model.Member;


@ServerEndpoint("/webChatServer") //클라이언트에서 서버로 접속 할 주소로 지정

public class WebChatServer extends HttpServlet {


private static Map<Session,Member> users = Collections.synchronizedMap(new HashMap<Session, Member>());


@OnOpen //클라이언트에서 서버로 접속할 때 - 비회원 아이디,공지내용 작성 처리

public void onOpen(Session session){

String userName = "user";

int rand_num = (int)(Math.random()*1000);


Member client = new Member();

System.out.println(session);

client.setName(userName+rand_num);


System.out.println(session + " connect");


users.put(session, client);

sendNotice(client.getName() + "님이 입장하셨습니다. 현재 사용자 " + users.size() + "명");

}


//공지출력 처리

public void sendNotice(String message){

String userName = "notice";

System.out.println(userName + " : " + message);


synchronized (users) {

Iterator<Session> it = users.keySet().iterator();

while(it.hasNext()){

Session currentSession = it.next();

try {

currentSession.getBasicRemote().sendText(userName + " ::: " + message);

} catch (IOException e) {

e.printStackTrace();

}

}

}

}


@OnMessage //클라이언트로 부터 메시지가 도착했을때 처리

public void onMsg(String message, Session session) throws IOException{

String userName = users.get(session).getName();

System.out.println(userName + " : " + message);


synchronized (users) {

Iterator<Session> it = users.keySet().iterator();

while(it.hasNext()){

Session currentSession = it.next();

if(!currentSession.equals(session)){

currentSession.getBasicRemote().sendText(userName + " :: " + message);

}

}

}

}


@OnClose //접속이 끊겼을때 처리

public void onClose(Session session) {

String userName = users.get(session).getName();

users.remove(session);

sendNotice(userName + "님이 퇴장하셨습니다. 현재 사용자 " + users.size() + "명");

}


}


추천0

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

공지사항
자유게시판
질문답변
1:1문의

 

별명 : 터푸가위
주소 : 부산시 동래구 명장로20번길 90
대표 : 박규태
메일 : dancepkt@******.com

접속자집계

오늘
31
어제
174
최대
10,760
전체
264,931
Copyright © dancePKT . All rights reserved.