-
使用的是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);
}
}