forked from Gottox/socket.io-java-client
-
Notifications
You must be signed in to change notification settings - Fork 9
Open
Description
代码如下
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",程序不能正常使用,不能在推送
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels