java版客户端:
使用开源项目java-websocket, github地址: https://github.com/TooTallNate/Java-WebSocket
github上有很多示例,具体可以去查看
此处主要是记录java-websocket实现客户端,并解决无法使用Service层方法(service为null)的问题,以及断线重连
引用包
<dependency> <groupId>org.java-websocket</groupId> <artifactId>Java-WebSocket</artifactId> <version>1.3.9</version> </dependency>
第一版,使用getBean获取Service层方法,并且实现断线重连
使用的是GitHub上的demo示例
import com.alibaba.fastjson.JSONArray;import com.sensor.vibration.utils.ApplicationContextRegister; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.java_websocket.client.WebSocketClient; import org.java_websocket.drafts.Draft; import org.java_websocket.handshake.ServerHandshake; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import java.net.URI; import java.util.Map; /** This example demonstrates how to create a websocket connection to a server. Only the most important callbacks are overloaded. */ @Slf4j public class SensorWebSocketClient extends WebSocketClient { @Autowired private UserService userService; public SensorWebSocketClient(URI serverUri , Draft draft ) { super( serverUri, draft ); } public SensorWebSocketClient(URI serverURI ) { super( serverURI ); } public SensorWebSocketClient(URI serverUri, Map<String, String> httpHeaders ) { super(serverUri, httpHeaders); } @Override public void onOpen( ServerHandshake handshakedata ) { System.out.println( "opened connection" ); // if you plan to refuse connection based on ip or httpfields overload: onWebsocketHandshakeReceivedAsClient } @Override public void onMessage( String msg ) { log.info("[websocket] 收到消息={}",msg); } @Override public void onClose( int code, String reason, boolean remote ) { // The codecodes are documented in class org.java_websocket.framing.CloseFrame System.out.println(