2015-04-01 66 views
5

我想使用春季启动基于websocketed的服务器/客户端应用程序。编写客户端连接到websocket在春季启动

服务器接受套接字连接,然后当它从客户端接收到文本消息时,它将处理它,然后返回一些数据。服务器有一个websocket处理程序,可以正确处理请求。

public class DataWebSocketHandler extends TextWebSocketHandler { 

private static Logger logger = LoggerFactory.getLogger(DataWebSocketHandler.class); 

private final DataService dataService; 

@Autowired 
public DataWebSocketHandler(DataService dataService) { 
    this.dataService = dataService; 
} 

@Override 
public void afterConnectionEstablished(WebSocketSession session) { 
    logger.debug("Opened new session in instance " + this); 
} 

@Override 
public void handleTextMessage(WebSocketSession session, TextMessage message) 
     throws Exception { 
    byte[] payload = this.dataService.getDataBytes(message.getPayload()); 
    session.sendMessage(new BinaryMessage(payload)); 
} 

@Override 
public void handleTransportError(WebSocketSession session, Throwable exception) 
     throws Exception { 
    session.close(CloseStatus.SERVER_ERROR); 
} 

} 

,注册

@Override 
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { 
    registry.addHandler(dataWebSocketHandler(), "/data").withSockJS(); 
} 

我的问题是,是,我不知道如何编写一个客户端,可以连接到服务器(假设我正确地写的服务器)和附加功能如何发送消息以及如何在客户端接收这些数据。

我没有找到一个这样的例子,但有很多地方写了一个websocket,它向所有订阅套接字的客户端广播,我不想这样做。

服务器使用嵌入式tomcat服务器。

回答

3

我相信这是你在找什么

https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-websocket-jetty/src/main/java/samples/websocket/jetty/echo

这是一个类似的服务器端代码..

https://github.com/spring-projects/spring-boot/blob/master/spring-boot-samples/spring-boot-sample-websocket-jetty/src/test/java/samples/websocket/jetty/SampleWebSocketsApplicationTests.java

这里是客户端使用.. org.springframework.web.socket.client.standard.StandardWebSocketClient广告一些其他配置。

我相信你可以找出休息;)

干杯

+0

链接是404,请更新更新 – Jackie 2016-08-24 20:30:38

+1

链接.. – 2016-08-24 20:34:48