importxxx.service.CacheService;importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Component;importjavax.annotation.PostConstruct;importjavax.annotation.PreDestroy;importjavax.websocket.ClientEndpoint;importjavax.websocket.ContainerProvider;importjavax.websocket.DeploymentException;importjavax.websocket.OnClose;importjavax.websocket.OnError;importjavax.websocket.OnMessage;importjavax.websocket.OnOpen;importjavax.websocket.Session;importjavax.websocket.WebSocketContainer;importjava.io.IOException;importjava.net.URI;importjava.net.URISyntaxException;/***
* 查询有多少空闲的worker
*@author
*/@ClientEndpoint
@Slf4j
@Componentpublic classStatusSocketClient {privateSession session;
@Value("${ws.asr.status}")
String statUrl;
@Autowired
CacheService cacheService;
WebSocketContainer container;
@PostConstructpublic void init() throwsURISyntaxException, IOException, DeploymentException {
container=ContainerProvider.getWebSocketContainer();
container.connectToServer(this, newURI(statUrl));
}
@PreDestroypublic void destroy() throwsIOException {//session.getAsyncRemote().sendText("EOS");
if(session!= null)
{if(session.isOpen())
{
session.close();
}
}
}
@OnOpenpublic voidopen(Session session){
log.info("Connected to Real-Time ASR Server Status Socket...");this.session =session;
}
@OnMessagepublic voidonMessage(String json){
log.info("Get a status message : " +json);
cacheService.setCacheValue("asr.server.status",json);
}
@OnClosepublic voidonClose(){
log.info("Websocket closed");
}
@OnErrorpublic voidonError(Session session, Throwable t) {
t.printStackTrace();
}public voidsend(String message){this.session.getAsyncRemote().sendText(message);
}public void close() throwsIOException {if(this.session.isOpen()){this.session.close();
}
}
}