websocket客户端

论坛 期权论坛 脚本     
匿名技术用户   2021-1-2 11:32   63   0
  • 使用的是java-websocket jar包

<dependency>
 <groupId>org.java-websocket</groupId>
 <artifactId>Java-WebSocket</artifactId>
 <version>1.3.9</version>
</dependency>

  • 具体代码如下

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

 }

转载于:https://my.oschina.net/ecoolper/blog/2997483

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP