通过CountDownLatch实现websocket同步返回
来源:互联网 发布:北京淘宝摄影基地 编辑:程序博客网 时间:2024/06/03 14:13
// 所有的技术,本人均拿 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)){@Overridepublic void onMessage( String message ) {setMsg(message);Comn.pl( "got: " + message + "\n" );getCdl().countDown();}@Overridepublic void onOpen( ServerHandshake handshake ) {getCdlConn().countDown();Comn.pl( "You are connected to ChatServer: " + getURI() + "\n" );}@Overridepublic void onClose( int code, String reason, boolean remote ) {Comn.pl( "You have been disconnected from: " + getURI() + "; Code: " + code + " " + reason + "\n" );}@Overridepublic 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 0
- 通过CountDownLatch实现websocket同步返回
- 通过Thread.join()和CountDownLatch来实现进程同步
- 利用 CountDownLatch 类实现线程同步
- 利用countDownLatch将异步多线程结果同步返回
- 采用Thread.join()或CountDownLatch来实现线程间同步
- Java CountDownLatch 异步转同步的实现方法
- 通过websocket 实现与容器的交互
- CountDownLatch同步辅助类
- CountDownLatch同步工具类
- 同步倒数计数器CountDownlatch
- CountDownLatch线程同步助手
- java5 CountDownLatch同步工具
- java CountDownLatch 同步计数器
- CountDownLatch 多线程同步
- 同步类CountDownLatch
- 多线程同步工具-CountDownLatch
- 线程同步-CountDownLatch
- 线程同步-CountDownLatch
- 友盟多渠道打包工具包 Parsing ‘AndroidManifest.xml' error : 未能找到文件
- android使用inSampleSize、inScaled、inDensity、inTargetDensity对图片进行缩放
- 并查集的简介及其C/C++代码的实现(某公司招聘笔试试题)
- SqlServer自动备份、自动压缩、自动删除旧备份
- linux awk命令介绍
- 通过CountDownLatch实现websocket同步返回
- VB.net使用httpWebRequest访问带cookie的网站时如何传递cookie值
- arch安装笔记
- Supervised Deep Learning with Auxiliary Networks
- 快速EDAS字体嵌入问题
- OMLSA 与 IMCRA音频去噪算法
- 基于mindwave脑电波进行疲劳检测算法的设计(4)
- 【BZOJ3572】【Hnoi2014】世界树 虚树
- LeetCode 82: Remove Duplicates from Sorted List II