WebSocket 사용, 클라이언트 전원 끄기, 서버 분리 감지
4999 단어 websocket
WebSocket 사용, 클라이언트 전원 끄기, 서버 분리 감지
서버는 WebSocketServlet을 사용하여 사용자 정의 MessageInbound를 실례화합니다.
web.xml에서 socket 설정
<servlet>
<servlet-name>WebSocketservlet-name>
<servlet-class>com.shadow.smmp.control.WebSocket servlet-class>
servlet>
<servlet-mapping>
<servlet-name>WebSocketservlet-name>
<url-pattern>/websocket/websocketurl-pattern>
servlet-mapping>
Websocket 구현
public class WebSocket extends WebSocketServlet {
@Override
protected StreamInbound createWebSocketInbound(String subProtocol, HttpServletRequest request) {
return new UserMessageInbound ();
}
}
MessageInbound를 다시 작성하여 클라이언트로부터 메시지를 수신합니다.
public class UserMessageInbound extends MessageInbound {
/**
*
*/
@Override
protected void onOpen(WsOutbound outbound) {
}
@Override
protected void onClose(int status) {
System.out.println(" "+status);
}
@Override
protected void onBinaryMessage(ByteBuffer message) throws IOException {
throw new UnsupportedOperationException("Binary message not supported.");
}
/**
*
*/
@Override
protected void onTextMessage(CharBuffer message) throws IOException {
}
}
클라이언트는 쓰지 않습니다. 주로 js일 수도 있고 안드로이드 쪽일 수도 있습니다.
만약 클라이언트가 이상하게 단전되어 연결이 계속 어떻게 되고 있다면 서버가 클라이언트가 아직 있는지 검사한 후에 연결을 끊어야 한다. 사실은 매우 간단하다. 서버가 심장 박동 검사를 쓰고 호출해야 한다.
ByteBuffer b = ByteBuffer.wrap("close".getBytes());
System.out.println(" " + this.user);
wsOutbound.close(1, b);
wsOutbound.close(1, b);이 방법은 클라이언트가 온라인이 아니라면 클라이언트가 없으면 자발적으로 연결을 해제할 수 있다고 판단한다
사실 WebSocket Servlet은 Tomcat의 Websocket을 사용합니다. 좀 유행이 지났습니다. Spring에는 자신만의 Websocket이 있습니다. 인터넷에서 찾아볼 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
iPad에서 WebSocket + Authorization이 연결되지 않음발단은 iPad에서의 개발 환경을 정비하려고 했기 때문이었습니다. VPS에 개발 환경을 넣을 수 있으면 편리하다고 생각해, 를 인스톨 해, 그대로는 누구라도 사용할 수 버리므로, Apache를 리버스 프록시로 해, ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.