private MessageHandler newSocketAndCopy() { SSLSocket newSocket = socketFactory.build(); MessageHandler messageHandler = new MessageHandler(newSocket, socketFactory, null); messageHandler.setClientId(this.clientId); messageHandler.setMappingMap(this.mappingMap); return messageHandler; }
public MessageListenerWorker(MessageHandler messageHandler) { this.messageHandler = messageHandler; this.socket = messageHandler.getSocket(); }
public void sendPong() { sendMessage("{\"Type\":\"Pong\",\"Payload\":{}}"); }
if (StringUtils.isBlank(error)) { log.debug("auth succeed..."); sendReqTunnel(); WorkerPool.submit(new HealthCheckWorker(this)); } else { MessageHandler messageHandler = newSocketAndCopy(); messageHandler.sendRegProxy(); WorkerPool.submit(new MessageListenerWorker(messageHandler)); break;
public void start() { try { this.socket = this.socketFactory.build(); } catch (NgrokClientException e) { log.error("Ngrok Start failed: ", e); return; } MessageHandler messageHandler = new MessageHandler(socket, socketFactory, this.tunnels); WorkerPool.submit(new MessageListenerWorker(messageHandler)); messageHandler.sendAuth(); }
@Override public void run() { try { while (true) { messageHandler.sendPing(); Thread.sleep(30000); } } catch (Exception e) { log.error("occurred some exception", e); } } }
if (messageHandler.onMessage(json)) { break;
public void sendPing() { sendMessage("{\"Type\":\"Ping\",\"Payload\":{}}"); }
public void sendRegProxy() { sendMessage("{\"Type\":\"RegProxy\",\"Payload\":{\"ClientId\":\"" + clientId + "\"}}"); }
/** * 发送认证授权 */ public void sendAuth() { JSONObject request = new JSONObject(); request.put("Type", "Auth"); JSONObject payload = new JSONObject(); payload.put("Version", "2"); payload.put("MmVersion", "1.7"); payload.put("User", ""); payload.put("Password", ""); payload.put("OS", "darwin"); payload.put("Arch", "amd64"); payload.put("ClientId", ""); request.put("Payload", payload); sendMessage(request.toJSONString()); }
public void sendReqTunnel() { for (Tunnel tunnel : this.tunnels) { JSONObject reuqest = new JSONObject(); reuqest.put("Type", "ReqTunnel"); JSONObject payload = new JSONObject(); String reqId = UUID.randomUUID().toString() .toLowerCase().replace("-", "") .substring(0, 16); mappingMap.put(reqId, tunnel); payload.put("ReqId", reqId); payload.put("Protocol", tunnel.getProto()); if (tunnel.getProto().equals("tcp")) { payload.put("RemotePort", tunnel.getRemotePort()); } else { payload.put("Subdomain", tunnel.getSubDomain()); payload.put("HttpAuth", tunnel.getHttpAuth()); payload.put("Hostname", tunnel.getHostname()); } reuqest.put("Payload", payload); sendMessage(reuqest.toJSONString()); } }