This commit is contained in:
地平线
2015-06-23 15:55:06 +08:00
parent 0ff6d7759b
commit 38ca86bed6
2 changed files with 11 additions and 5 deletions

View File

@@ -15,14 +15,21 @@ import java.util.concurrent.*;
*/ */
public final class WebSocketEngine { public final class WebSocketEngine {
private String engineid; private static final Map<String, WebSocketEngine> globals = new ConcurrentHashMap<>();
private final String engineid;
private final Map<Serializable, WebSocketGroup> containers = new ConcurrentHashMap<>(); private final Map<Serializable, WebSocketGroup> containers = new ConcurrentHashMap<>();
WebSocketEngine() { static WebSocketEngine create(String engineid) {
WebSocketEngine engine = globals.get(engineid);
if (engine != null) return engine;
engine = new WebSocketEngine(engineid);
globals.put(engineid, engine);
return engine;
} }
void setEngineid(String engineid) { private WebSocketEngine(String engineid) {
this.engineid = engineid; this.engineid = engineid;
} }

View File

@@ -37,11 +37,10 @@ public abstract class WebSocketServlet extends HttpServlet {
@Resource @Resource
private WebSocketNodeService nodeService; private WebSocketNodeService nodeService;
protected final WebSocketEngine engine = new WebSocketEngine(); protected final WebSocketEngine engine = WebSocketEngine.create(this.getClass().getName() + "-" + Arrays.toString(this.getClass().getAnnotation(WebServlet.class).value()));
@Override @Override
public void init(Context context, AnyValue conf) { public void init(Context context, AnyValue conf) {
engine.setEngineid(this.getClass().getName() + "-" + Arrays.toString(this.getClass().getAnnotation(WebServlet.class).value()));
if (nodeService != null) { if (nodeService != null) {
nodeService.addWebSocketEngine(engine); nodeService.addWebSocketEngine(engine);
nodeService.initUserNodes(); nodeService.initUserNodes();