通过CountDownLatch实现websocket同步返回

// 所有的技术,本人均拿  51kxd.com  这个本人的小网站来验证

// 使用的jar包:  https://github.com/TooTallNate/Java-WebSocket  

// websocket参考网站

// jar包原想上传的,但在CSDN找不到上传的地方

// 主要的类
import java.net.URI;
import java.util.concurrent.CountDownLatch;


import org.java_websocket.handshake.ServerHandshake;


import com.zmy.util.Comn;


public class WebSockStu {
	public static void main(String[] args){
		t();
	}
	
	public static String t(){
		String uri = "wss://api.radarlab.org:443";
		uri="ws://api.radarlab.org:5006";
		WebSocketClientExt cc=null;
		try{ 
			cc = new WebSocketClientExt(new URI(uri)){
				@Override
				public void onMessage( String message ) {
					setMsg(message);
					Comn.pl( "got: " + message + "\n" );
					getCdl().countDown();
				}
	
				@Override
				public void onOpen( ServerHandshake handshake ) {
					getCdlConn().countDown();
					Comn.pl( "You are connected to ChatServer: " + getURI() + "\n" );
				}
	
				@Override
				public void onClose( int code, String reason, boolean remote ) {
					Comn.pl( "You have been disconnected from: " + getURI() + "; Code: " + code + " " + reason + "\n" );
				}
	
				@Override
				public void onError( Exception ex ) {
					Comn.pl( "Exception occured ...\n" + ex + "\n" );
					ex.printStackTrace();
				}
			};




		}catch(Exception e){
			e.printStackTrace();
		}
		cc.connect();
		try{
			CountDownLatch cdl = new CountDownLatch(1);
			cc.setCdlConn(cdl);
			cdl.await();
		}catch(Exception e){
			e.printStackTrace();
		}
		
		String m="{\"id\": 2,\"command\": \"account_info\",\"account\": \"rLnR6ruCzsHRvhEAGMsr2kDHWNCMhs2hZc\",\"strict\": true,\"ledger_index\": \"validated\" }";
		byte[] b = null;
		try{
			b=m.getBytes("UTF-8");
		}catch(Exception e){
			e.printStackTrace();
		}
		cc.send(b);
		try{
			CountDownLatch cdl = new CountDownLatch(1);
			cc.setCdl(cdl);
			cdl.await();
		}catch(Exception e){
			e.printStackTrace();
		}
		Comn.pl("return:"+cc.getMsg());
		cc.close();
		return cc.getMsg();
	}
}




// 素材类

import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;


import org.java_websocket.client.WebSocketClient;


public abstract class WebSocketClientExt extends WebSocketClient{
	public WebSocketClientExt(URI serverURI){
		super(serverURI);
	}
	private List<Object> objs = new ArrayList<Object>();
	
	private String msg = null;
	private CountDownLatch cdl = null;
	private CountDownLatch cdlConn = null;
	public List<Object> getObjs() {
		return objs;
	}
	public void setObjs(List<Object> objs) {
		this.objs = objs;
	}
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	public CountDownLatch getCdl() {
		return cdl;
	}
	public void setCdl(CountDownLatch cdl) {
		this.cdl = cdl;
	}
	public CountDownLatch getCdlConn() {
		return cdlConn;
	}
	public void setCdlConn(CountDownLatch cdlConn) {
		this.cdlConn = cdlConn;
	}
	
	
}

// 只是为了打印

public class Comn {
	public static void main(String[] args) {

	}
	public static void p(Object o) {
		System.out.print(o);
	}
	public static void pl(Object o) {
		System.out.println(o);
	}
}


// 欢迎大家交流

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值