Java WebSocketClient 做本地数据接收处理服务程序

Client是基本类

WebSocketClientTest是主方法入口

maven 地址,可能还需要其他的包等会截图



org.java-websocket

Java-WebSocket

1.3.0

Java WebSocketClient 做本地数据接收处理服务程序_第1张图片

import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.ByteBuffer;
import java.nio.channels.NotYetConnectedException;
import java.util.Map;
 
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.Draft;
import org.java_websocket.handshake.ServerHandshake;
 
 
 
import net.sf.json.JSONObject;
 
public class Client extends WebSocketClient {
 
	public Client(URI serverUri, Draft protocolDraft, Map httpHeaders, int connectTimeout) {
		super(serverUri, protocolDraft, httpHeaders, connectTimeout);
	}
 
	@Override
	public void onOpen(ServerHandshake arg0) {
		System.out.println("打开链接");
		WebSocketClientTest.heartbeat=1;
	}
 
	@Override
	public void onMessage(String arg0) {
		if(arg0!=null){
			System.out.println("收到消息" + arg0);
			//一般在这执行你需要的业务,通常返回JSON串然后解析做其他操作
		}
		
	}
 
	@Override
	public void onError(Exception arg0) {
		System.out.println("发生错误已关闭,正在重连");
		WebSocketClientTest.heartbeat=0;
	}
 
	@Override
	public void onClose(int arg0, String arg1, boolean arg2) {
		System.out.println("链接已关闭,正在重连");
		WebSocketClientTest.heartbeat=0;
	}
 
	@Override
	public void onMessage(ByteBuffer bytes) {
		try {
			System.out.println(new String(bytes.array(), "utf-8"));
		} catch (UnsupportedEncodingException e) {
			System.out.println("出现异常");
			WebSocketClientTest.heartbeat=0;
		}
	}
}
import java.net.URI;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
 
import org.java_websocket.WebSocket.READYSTATE;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.Draft_17;
 
 
public class WebSocketClientTest {
	public static WebSocketClient client;
	
	public static int heartbeat = 0;// 0代表链接断开或者异常 1代表链接中.2代表正在连接	
	public static String url="";//请求的路径地址包括端口
	public static void main(String[] args) throws Exception {
		Timer timer = new Timer();
		Task task = new Task();
		timer.schedule(task, new Date(), 5000);
	}
 
	public static void connect() throws Exception {
		client = new Client(new URI(url), new Draft_17(), null, 0);
		client.connect();
		int count = 0;
		heartbeat=2;
		while (!client.getReadyState().equals(READYSTATE.OPEN)) {
			count++;
			if (count % 1000000000 == 0) {
				System.out.println("还没有打开");
			}
		}
		client.send("发送给服务器端的信息");
	}
 
	public static void reconnect() throws Exception {
		Thread.currentThread().sleep(15000);// 毫秒
		System.out.println("再次启动尝试连接");
		connect();
	}
 
	public static void send(byte[] bytes) {
		client.send(bytes);
	}
}
import java.util.TimerTask;


class Task extends TimerTask {
 
	@Override
	public void run() {
		try {
			System.out.println("心跳检测:"+((WebSocketClientTest2.heartbeat == 1)?"连接中":"未连接中"));
			if (WebSocketClientTest2.heartbeat ==0 ) {
				WebSocketClientTest2.connect();
			}
		} catch (Exception e) {
			e.printStackTrace();
 
		}
	}
}

这里只贴webSocket的主要代码,其他关于业务逻辑的,JDBC的就不在贴上面了

需要注意下的是关于用Eclipse打jar包,

我用的是 Eclipse Java EE IDE for Web Developers.

Version: Mars Release (4.5.0)

按照网上装fatjar死活装不上,原因居然是用错包了,这里特此吐槽下需要用net.sf.fjep.fatjar_0.0.32.jar

0.0.32的版本亲测可用,网上一般都是0.0.31的是可能装了没反应

下面是关于安装和使用的链接

https://www.cnblogs.com/wbyp/p/6222182.html

打完jar包后就可以 cmd java -jar xxxx/jar去运行了
 

你可能感兴趣的:(WebSocket)