1.客户端
@ClientEndpoint
public class WebSocketClient extends Endpoint {
private static Logger log = LoggerFactory.getLogger(WebSocketClient .class);
private Object data= null;
@OnOpen
@Override
public void onOpen(Session session, EndpointConfig config) {
data = (Object ) config.getUserProperties().get("data");
log.info("连接成功 , 任务Id:" + task.getControlTaskNo());
session.addMessageHandler(new MessageHandler.Whole<String>() {
/** * 有返回信息时触发 * */
@OnMessage
@Override
public void onMessage(String message) {
log.info("返回信息:" + message);
}
});
}
@OnError
@Override
public void onError(Session session, Throwable t) {
log.error("失败:" + t.getMessage());
}
@OnClose
@Override
public void onClose(Session session, CloseReason closeReason) {
log.info("断开连接");
}
}
2.调用
public void sendWebSocket(Object data) {
String url = "XXX";//websocket服务端地址
// 获取WebSocket连接器
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
Session session = null;
try {
ClientEndpointConfig clientEndpointConfig = ClientEndpointConfig.Builder.create().build();
clientEndpointConfig.getUserProperties().put("data", data);
// 创建会话
session = container.connectToServer(WebSocketClient .class, clientEndpointConfig, new URI(url));
session.setMaxIdleTimeout(5000);
session.getBasicRemote().sendText(data.toString());// 发送信息
} catch (Exception e) {
log.error("WebSocket创建连接出错:" + e.getMessage());
}
}