Android中Java-WebSocket简介

最近项目中用到长连接,使用的是Java-WebSocket,因此记录一下

GitHub地址https://github.com/TooTallNate/Java-WebSocket

到GitHub中查看最新的版本,然后引用, 因此这里就不讲如何引用了,只讲用法:

public class SocketService extends Service {
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    WebSocketClient client;

    @Override
    public void onCreate() {
        super.onCreate();

        try {
            client = new WebSocketClient(new URI("填入与后台连接的url")) {

                @Override
                public void onWebsocketPong(WebSocket conn, Framedata f) {
                    super.onWebsocketPong(conn, f);
//                    LogUtils.showLog(f.getPayloadData().toString());
//                    LogUtils.showLog("socket ping"+f.getOpcode());
                }

                @Override
                public void onOpen(ServerHandshake serverHandshake) {
                    // 连接打开以后的回调

                }


                @Override
                public void onMessage(String message) {
                    // 收到消息的回调
                    LogUtils.showLog("socket接收服务器发来的消息:" + message);
                }

                @Override
                public void onError(Exception ex) {
                    // 连接出错的回调
                }

                @Override
                public void onClose(int code, String reason, boolean remote) {
                    // 连接关闭的回调, remote如果为true表示被服务端cut掉了

                }

                @Override
                public void onMessage(ByteBuffer bytes) {
                    // 返回的字节流消息
                    LogUtils.showLog("socket bytebuffer bytes");
                }
            };

            client.connect();
        } catch (Exception e) {

        }
    }


    /**
     * 重连websocket
     * 此方法在handler中调用,由于重新连接websocket的线程如果与原先连接websocket的线程相同,会报异常,
     * 所以切换到HandlerThread的线程中重连
     */
    private void reConnectWebSocket() {
        if (null != client && !client.isOpen() && !isReConnecting) {
            //LogUtils.showLog("socket onStartConnect");
            client.reconnect();
        }
    }


    @Override
    public void onDestroy() {
        super.onDestroy();

        try {
            LogUtils.showLog("socket service onDestroy()");
            client.close();
        } catch (Exception e) {

        }
    }
}

1、重连机制需要自己来写:

(1)监听网络连接, 当从断开到连上就可以调用重连

(2)在client回调的onError和onClose中调用重连

2、心跳机制需要自己写

自己写一个循环的handler, 隔20秒就发送一个心跳:client.sendPing(), 这时候onWebsocketPong()会回调一次,这就是一次心跳

3、后端传回来的消息在onMessage中返回来, 我们可以跟后台定格式,哪些业务需要处理什么格式的数据,然后根据type来分发给业务。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
Android Java-WebSocket是一个用于在Android应用程序实现WebSocket通信的库。它提供了一种简单而强大的方式来建立WebSocket连接,并通过发送和接收消息来实现实时通信。 使用Android Java-WebSocket,您可以轻松地创建WebSocket客户端,并与WebSocket服务器进行通信。以下是使用Android Java-WebSocket的一般步骤: 1. 添加依赖:在您的Android项目,首先需要添加Android Java-WebSocket库的依赖。您可以通过在项目的build.gradle文件添加以下行来完成: ``` implementation 'org.java-websocket:Java-WebSocket:1.5.1' ``` 2. 创建WebSocket客户端:使用Android Java-WebSocket,您可以创建一个WebSocketClient对象来表示WebSocket客户端。您可以指定服务器的URL和其他配置选项。 3. 实现WebSocket监听器:为了处理WebSocket连接的事件和消息,您需要实现WebSocketListener接口,并重写其的方法。例如,您可以在onOpen方法处理连接成功的事件,在onMessage方法处理接收到的消息,在onClose方法处理连接关闭的事件等。 4. 连接到WebSocket服务器:使用WebSocketClient对象,您可以调用connect方法来连接到WebSocket服务器。在连接成功后,将触发onOpen方法。 5. 发送和接收消息:一旦连接建立,您可以使用send方法发送消息到服务器,并通过onMessage方法接收服务器发送的消息。 6. 关闭连接:当您不再需要与服务器通信时,可以调用WebSocketClient对象的close方法来关闭连接。 这是一个简单的Android Java-WebSocket的使用示例: ```java import org.java_websocket.client.WebSocketClient; import org.java_websocket.handshake.ServerHandshake; import org.java_websocket.WebSocket; import java.net.URI; import java.net.URISyntaxException; public class MyWebSocketClient extends WebSocketClient { public MyWebSocketClient(URI serverUri) { super(serverUri); } @Override public void onOpen(ServerHandshake handshakedata) { // 连接成功处理 } @Override public void onMessage(String message) { // 接收到消息处理 } @Override public void onClose(int code, String reason, boolean remote) { // 连接关闭处理 } @Override public void onError(Exception ex) { // 错误处理 } } // 在Activity或Fragment使用 try { URI serverUri = new URI("ws://example.com/websocket"); MyWebSocketClient client = new MyWebSocketClient(serverUri); client.connect(); } catch (URISyntaxException e) { e.printStackTrace(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值