我有客户端 - 服务器应用程序,客户端基于Java Desktop 应用程序,而服务器是带有端点公开的Web应用程序并部署了tomcat
@OnClose
是否处理以下方案。我可以在@OnClose
方法发送一些消息到服务器端点。
我需要处理因
而关闭客户端连接的情况1。)Internet丢弃连接
2.)系统进入休眠模式。
服务器可以打开我的客户端连接。
这是我的客户代码
@ClientEndpoint
public class ChatroomClientEndPoint {
Session session = null;
public ChatroomClientEndPoint() {
URI uri;
try {
uri = new URI("endpoint url");
ContainerProvider.getWebSocketContainer().connectToServer(this, uri);
System.err.println("Connection found");
} catch (Exception ex) {
System.err.println("No connection found-->" + ex);
}
}
@OnOpen
public void processOpen(Session session) throws MalformedURLException, IOException {
session.setMaxIdleTimeout(60000 * 60 * 24); //websocket session timeout =1 day
this.session = session;
}
@OnMessage
public void processMessage(String message) throws JSONException {
// on receiving messages from server, sends desktop notifications
}
public void disConnect() throws IOException {
sendMessage("close");
}
}
**此代码已经开发,我认为他们没有实现@OnClose
,因为他们向服务器发送关闭消息,然后服务器从列表中删除该会话。
如果出现上述类似的失败,@OnClose
可以提供帮助。
答案 0 :(得分:0)
我找到了解决方案/解决方法。
一旦您的互联网连接断开,套接字通道保持不变,客户端就无法再发送消息。
我做了什么,每当请求来到我的服务器端点时,我问客户"如果它已连接" ,则max i等待3秒钟以获得响应,失败为此,它表示套接字未连接。