@Configuration
public class WebsocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
@ServerEndpoint("/websocket")
@Component
public class WebSocketServer {
private static Logger logger = LoggerFactory.getLogger(WebSocketServer.class);
@OnOpen
public void onOpen(Session session) {
}
@OnClose
public void onClose() {
}
@OnMessage
public void onMessage(String message, Session session) {
logger.info("message: {}", message);
try {
session.getBasicRemote().sendText(message);
} catch (IOException e) {
e.printStackTrace();
}
}
@OnError
public void onError(Session session, Throwable throwable) {
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class WebSocketClientTest {
@Test
public void onMessage() {
WebSocketClient client = new WebSocketClient("ws://127.0.0.1:8080/websocket");
client.send("hello");
client.close();
}
}
报错如下:
Caused by: java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available
at org.springframework.util.Assert.state(Assert.java:73)
at org.springframework.web.socket.server.standard.ServerEndpointExporter.afterPropertiesSet(ServerEndpointExporter.java:106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1758)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1695)
... 39 more
配置如下:
报错如下: