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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions