开发工具: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环境报错了,自行斟酌使用。

d64ad59ceea42768836fe433f34a57f8.png

dependencies

新建客户端类

继承SocketClient接下来就交给AS处理了,windows下直接ALT+Enter方法全部自动生成~

bad2e8b3a403e0447e89fea742c8b9c8.png

新建客户端类

顺便贴一下代码吧~

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();

}

}

最后给出成功结果

fb503c16342b2d420bd8130f82b6bf57.png

测试结果

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐