muyu

websocket客户端-java-websocket

发表于:2019-1-6 0:14:17 点击量:0 赞:未知

因为tio只有websocket服务端,没有服务端,故写此分享

websocket客户端-具体代码

    public class WsClient extends WebSocketClient {

        public WsClient(URI serverUri) {
            super(serverUri);
        }

        @Override
        public void onClose(int code, String reason, boolean remote) {
            if (remote) {
                logger.info("连接已被远程服务器关闭");
            }
        }

        @Override
        public void onError(Exception e) {
            logger.error(e);
        }

        @Override
        public void onMessage(ByteBuffer bytes) {
            // 接受二进制流数据
            JSONObject msg = JSONObject.parseObject(new String(bytes.array()));
            try (Jedis jedis = jedisAgent.getResource()) {
                jedis.publish(PUBLISH_NAME, msg.toJSONString());
            }

            // 当客户端所订阅的设备的状态(设备所有的状态见接口 4 的接口说明)发 生改变时(比如设备由在床状态变为离床状态),服务器也会把该状态(离床的状
            // 态)推送到该客户端上,该情况需要客户端回复;
            if ("deviceStatus".equals(msg.getString("msgType"))) {
                JSONObject rst = new JSONObject();
                rst.put("msgType", "deviceStatus");
                JSONObject msgData = new JSONObject();
                msgData.put("msgId", msg.getJSONObject("msgData").get("msgId"));
                rst.put("msgData", msgData);
                wsClient.send(rst.toJSONString());
            }
        }

        @Override
        public void onMessage(String message) {
            // 接受String类型数据
            logger.info(message);
        }

        @Override
        public void onOpen(ServerHandshake handshake) {
            logger.infof("已连接到websocket:%s", WS_Url);
        }

    }

websocket客户端-pom

<dependency>
    <groupId>org.java-websocket</groupId>
    <artifactId>Java-WebSocket</artifactId>
    <version>1.3.9</version>
</dependency>
TCP连接数:, IP数:
    发 送