diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/socketio/DesignerSocketIO.java b/designer-realize/src/main/java/com/fr/design/mainframe/socketio/DesignerSocketIO.java index 132d72d17..bcf7450e1 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/socketio/DesignerSocketIO.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/socketio/DesignerSocketIO.java @@ -68,8 +68,8 @@ public class DesignerSocketIO { return; } try { - String uri = getSocketUri(current); - socketIO = Optional.of(IO.socket(new URI(uri))); + String[] uri = getSocketUri(current); + socketIO = Optional.of(IO.socket(new URI(uri[0]))); socketIO.get().on(WorkspaceConstants.WS_LOGRECORD, printLog); socketIO.get().on(WorkspaceConstants.CONFIG_MODIFY, new Emitter.Listener() { @Override @@ -109,19 +109,23 @@ public class DesignerSocketIO { } } - private static String getSocketUri(Workspace current) throws IOException { + private static String[] getSocketUri(Workspace current) throws IOException { URL url = new URL(current.getPath()); - int port = WorkContext.getCurrent().get(SocketInfoOperator.class).getPort(); + Integer[] ports = WorkContext.getCurrent().get(SocketInfoOperator.class).getPort(); WorkspaceConnection connection = WorkContext.getCurrent().getConnection(); - return String.format("%s://%s:%s%s?%s=%s&%s=%s", - url.getProtocol(), - url.getHost(), - port, - WorkspaceConstants.WS_NAMESPACE, - DecisionServiceConstants.WEB_SOCKET_TOKEN_NAME, - connection.getToken(), - RemoteDesignConstants.USER_LOCK_ID, - connection.getId() - ); + String[] result = new String[ports.length]; + for (int i = 0; i < ports.length; i++ ) { + result[i] = String.format("%s://%s:%s%s?%s=%s&%s=%s", + url.getProtocol(), + url.getHost(), + ports[i], + WorkspaceConstants.WS_NAMESPACE, + DecisionServiceConstants.WEB_SOCKET_TOKEN_NAME, + connection.getToken(), + RemoteDesignConstants.USER_LOCK_ID, + connection.getId()); + } + return result; + } }