Skip to content

链接在没有断开的情况下,回调onSocketConnectAck #1

@cheb2003

Description

@cheb2003

代码如下
public class PushServiceImpl {
private static final Logger logger = LoggerFactory.getLogger(PushServiceImpl.class);
private SocketIO socket;

private MyIOCallback myIOCallback = new MyIOCallback();
@PostConstruct
public void init() throws MalformedURLException {
    socket = new SocketIO();
    socket.connect("http://sock.yunba.io:3000/", myIOCallback);

}
private static String APPKEY = "";
@Async
public void pushOrder(int did){
    //socket.emit("publish", new JSONObject("{'topic': 't1', 'msg': 'hello form java socket.io client', 'qos': 1}"));
    socket.emit("publish_to_alias", new JSONObject("{'alias': 'd" + did + "', 'msg': 'pullOrder', 'qos': 1}"));
}


@Scheduled(cron="0/10 * *  * * ? ")
public void checkConn(){
    if (!socket.isConnected()) {
        logger.info("socket reconnect begin");
        socket.reconnect();
        logger.info("socket reconnect end");
    } else {

    }
}



public void onSocketConnectAck() throws Exception {
    System.out.println("onSocketConnectAck");

    String customId = "";
    try {
        List<String> file = java.nio.file.Files.readAllLines(Paths.get("customid.dat"), Charset.defaultCharset());
        customId = file.get(0);
    } catch (IOException e) {
        customId = UUID.randomUUID().toString();
    }

    // emit connect
    socket.emit("connect", new JSONObject("{'appkey': '" + APPKEY + "', 'customid': 'qdriverserver'}"));

    try {
        PrintWriter writer = new PrintWriter("customid.dat", Charset.defaultCharset().name());
        writer.println(customId);
        writer.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
public void onConnAck(JSONObject json) throws Exception {
    System.out.println("onConnAck success " + json.get("success"));

    //socket.emit("publish", new JSONObject("{'topic': 't1', 'msg': 'hello form java socket.io client', 'qos': 1}"));
    //socket.emit("publish_to_alias", new JSONObject("{'alias': 'd6', 'msg': \"hello to d6\"}"));

}
public void onPubAck(Object o) {
    System.out.println(o);
}
class MyIOCallback implements IOCallback{
    @Override
    public void onDisconnect() {
        System.out.println("Connection terminated.");
    }

    @Override
    public void onConnect() {
        System.out.println("Connection established");
    }

    @Override
    public void onMessage(String data, IOAcknowledge ack) {
        System.out.println("--1" + data);
    }

    @Override
    public void onMessage(JSONObject json, IOAcknowledge ack) {
        System.out.println("--2" + json.toString());
    }

    @Override
    public void on(String event, IOAcknowledge ack, Object... args) {
        try {
            if (event.equals("socketconnectack")) {
                onSocketConnectAck();
            } else if (event.equals("connack")) {
                onConnAck((JSONObject) args[0]);
            } else if (event.equals("puback")) {
                onPubAck(args[0]);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onError(SocketIOException socketIOException) {
        logger.error("{}",socketIOException.getMessage());
    }
}

}

程序在初始化时连接服务器,在运行过程中,给别名发推送时,在链接没有断开的情况下,回调onSocketConnectAck,造成再次调用 socket.emit("connect",程序不能正常使用,不能在推送

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions