if(state==LoginState.LOGIN_SUCCESS){ //登录成功
System.out.println("登录成功,正在发送消息至 "+args[2]+",请稍候...");
ActionEventFuture future = new ActionEventFuture(); //建立一个Future来等待操作事件
client.sendChatMessage(Long.parseLong(args[2]), new Message(args[3]), future);
ActionEvent event = future.waitActionEventWithoutException(); //等待操作完成事件
switch(event.getEventType()){
case SUCCESS:
SendChatMessageSuccessEvent evt = (SendChatMessageSuccessEvent) event;
if(evt.isSendToMobile()){
System.out.println("发送成功,消息已通过短信发送到对方手机!");
}else if(evt.isSendToClient()){
System.out.println("发送成功,消息已通过服务直接发送到对方客户端!");
}
break;
case FAILURE:
FailureEvent evt2 = (FailureEvent) event;
switch(evt2.getFailureType()){
case BUDDY_NOT_FOUND:
System.out.println("发送失败, 该用户可能不是你好友,请尝试添加该用户为好友后再发送消息。");
break;
case USER_NOT_FOUND:
System.out.println("发送失败, 该用户不是移动用户。");
break;
case SIPC_FAIL:
System.out.println("发送失败, 服务器返回了错误的信息。");
break;
case UNKNOWN_FAIL:
System.out.println("发送失败, 不知道错在哪里。");
case REQEUST_FAIL:
RequestFailureEvent evt3 = (RequestFailureEvent) event;
System.out.println("提示:"+evt3.getReason()+", 更多信息请访问:"+evt3.getReason());
default:
System.out.println("发送消息失败!"+event.toString());
}
break;
/* 以下三个错误状态是在异步发送消息的情况才会发生,
* 为了方便处理,使用waitActionEventWithException()同步的情况下,这三个错误是通过异常来处理的