웹소켓

운영 환경:

톰캣7 이상

크롬
버전 4+에서 지원됨
파이어폭스
버전 4+에서 지원됨
인터넷 익스플로러
버전 10 이상에서 지원됨
오페라
버전 10 이상에서 지원됨
원정 여행
버전 5+에서 지원됨


HTML 코드:

<!DOCTYPE html>

<html>
  <head>
    <title>index.html</title>
    <meta charset=UTF-8> 
  </head>
  <body>
    <div>
<input type="hidden" value="시작" οnclick="start()" />
</div>
<사업부 아이디="메시지"></div>
<스크립트 유형="텍스트/자바스크립트">
var webSocket=null;
함수 연결() {
webSocket = new WebSocket('ws://10.0.0.77:8080/webSocket/websocket');
webSocket.onerror = 함수(이벤트) {
onError(이벤트);
};

webSocket.onopen = 함수(이벤트) {
onOpen(이벤트);
};

webSocket.onmessage = 함수(이벤트) {
onMessage(이벤트);
};

webSocket.onclose = 함수(이벤트) {
onClose(이벤트);
};
}


함수 onMessage(이벤트) {
document.getElementById('messages').innerHTML += '<br />' + event.data;
}


함수 onOpen(이벤트) {
document.getElementById('messages').innerHTML = '연결 설정됨';
}

함수 onClose(이벤트) {
document.getElementById('messages').innerHTML = '연결이 종료되었습니다!';
webSocket.close();
}


함수 onError(이벤트) {
알림(event.data);
경고("오류");
}


함수 시작() {
var value = document.getElementById('onfoc').value;
webSocket.send(값);
}

함수 포커스펀(){
document.getElementById('onfoc').value="";
}
</스크립트>
<입력 유형="버튼" 값="연결" οnclick="연결();" />
메시지: <input type="text" id="onfoc" οnfοcus="focusfun();" value="메시지를 입력하세요" />
<input type="버튼" οnclick="시작();" value="发送" />
<input type="버튼" οnclick="onClose();" 값="닫기" />
  </body>

</html>


자바 배경 코드:


import java.io.IOException;
import java.util.ArrayList;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint(값 = "/websocket")
공개 클래스 WebSocket {
@SuppressWarnings("원시 유형")
비공개 정적 ArrayList mmiList = new ArrayList();  
@OnMessage
    public void onMessage(문자열 메시지, 세션 세션) 
    IOException 발생, InterruptedException {

// 테스트 목적으로 클라이언트 메시지 출력
System.out.println("수신: " + message);
System.out.println("mmiList.size() = " + mmiList.size());
send(메시지,세션);
    }

@SuppressWarnings("선택하지 않음")
@OnOpen
    공개 무효 onOpen(세션 세션) {
mmiList.add(session);
        System.out.println("로그인: = " + session.getId() + " 클라이언트 연결됨");
        send("코드는 '"+session.getId() +"' 온라인입니다. ",session);
    }


    @OnClose
    public void onClose(세션 세션) {
    mmiList.remove(세션);
    System.out.println("퇴출자: = " + session.getId() + " Connection closed");
    send("코드는 '"+session.getId() +"' offline입니다.",session);
    }
    
    public void send(String message, Session session){
    세션 se = null;
    for (int i = 0; i < mmiList.size(); i++) {
se = (세션)mmiList.get(i);
노력하다 {
se.getBasicRemote().sendText("코드명이 ' " + session.getId() + "'인 사람이 메시지를 보냅니다: " + message);
} 잡기(IOException e) {
// TODO 자동 생성 catch 블록
e.printStackTrace();
}
} }
    }



Guess you like

Origin blog.csdn.net/u010174217/article/details/17533491