开发工具:android studio 3.1.3
小白看看就好了,大神飘过。
由于先前的的socket搭建起来给小程序用的。然后出现只能用wss来连接。在做转发的时候遇到了点问题放弃了。于是直接使用 Java-WebSocket 来实现了。
大部分过程在java-websocket-wiki中给出了。我也只能给大家抛个砖头自己去看了。我直接引入外部库就实现了,大致流程如下。(默认支持一般socket连接的哦)
引入外部库
在模块依赖的配置文件中添加implementation "org.java-websocket:Java-WebSocket:1.3.9"
Java-WebSocket给出的是compile "org.java-websocket:Java-WebSocket:1.3.9"
但是在我这个AS环境报错了,自行斟酌使用。
新建客户端类
继承SocketClient
接下来就交给AS处理了,windows下直接ALT+Enter
方法全部自动生成~
顺便贴一下代码吧~
package cn.zhushuliang.kuai.mysecondapp;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import java.net.URI;
import java.net.URISyntaxException;
public class SocketClient extends WebSocketClient {
/**
* 此方法为了直接运行测试用例,实际使用自行此类重写
* @param args
* @throws URISyntaxException
*/
public static void main(String[] args) throws URISyntaxException {
WebSocketClient client = new SocketClient(new URI("wss://socket.xxxxx.com"));
client.connect();
}
public SocketClient(URI serverUri) {
super(serverUri);
}
@Override
public void onOpen(ServerHandshake handshakedata) {
System.out.println( "opened connection" );
}
@Override
public void onMessage(String message) {
System.out.println( message);
// send(message);
}
@Override
public void onClose(int code, String reason, boolean remote) {
System.out.println( "Connection closed by " + ( remote ? "remote peer" : "us" ) );
}
@Override
public void onError(Exception ex) {
ex.printStackTrace();
}
}
最后给出成功结果
测试结果
网友评论