WebSocket识别Single模式,Single模式下重复登陆时默认会关闭之前的WebSocket连接
This commit is contained in:
@@ -596,6 +596,14 @@ public abstract class WebSocket<G extends Serializable, T> {
|
|||||||
this.getLogger().log(Level.SEVERE, "WebSocket receive or send Message error", t);
|
this.getLogger().log(Level.SEVERE, "WebSocket receive or send Message error", t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当Single模式下用户重复登陆时回调函数, 默认处理逻辑:关闭之前的WebSocket连接
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public void onSingleRepeatConnect() {
|
||||||
|
this._engine.node.forceCloseWebSocket(getUserid());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取Logger
|
* 获取Logger
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -186,11 +186,22 @@ public abstract class WebSocketServlet extends HttpServlet implements Resourcabl
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
webSocket._userid = userid;
|
webSocket._userid = userid;
|
||||||
WebSocketServlet.this.node.localEngine.add(webSocket);
|
if (single) {
|
||||||
WebSocketRunner runner = new WebSocketRunner(context, webSocket, restMessageConsumer, response.removeChannel());
|
WebSocketServlet.this.node.existsWebSocket(userid).whenComplete((rs, ex) -> {
|
||||||
webSocket._runner = runner;
|
if (rs) webSocket.onSingleRepeatConnect();
|
||||||
context.runAsync(runner);
|
WebSocketServlet.this.node.localEngine.add(webSocket);
|
||||||
response.finish(true);
|
WebSocketRunner runner = new WebSocketRunner(context, webSocket, restMessageConsumer, response.removeChannel());
|
||||||
|
webSocket._runner = runner;
|
||||||
|
context.runAsync(runner);
|
||||||
|
response.finish(true);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
WebSocketServlet.this.node.localEngine.add(webSocket);
|
||||||
|
WebSocketRunner runner = new WebSocketRunner(context, webSocket, restMessageConsumer, response.removeChannel());
|
||||||
|
webSocket._runner = runner;
|
||||||
|
context.runAsync(runner);
|
||||||
|
response.finish(true);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user