Java服務端模擬websocket客戶端建立長連結之---WebSocketClient
阿新 • • 發佈:2019-02-17
最近專案裡需要在Java服務端與c++進行websocket通訊,java_websocket.client.WebSocketClient外掛很好的解決了這個需求。
首先需要在pom.xml檔案中引入此依賴:
<dependency>
<groupId>org.java-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>1.3.5</version>
</dependency>
Java程式碼如下:
import org.apache.log4j.Logger; import org.java_websocket.WebSocket; import org.java_websocket.client.WebSocketClient; import org.java_websocket.drafts.Draft_6455; import org.java_websocket.handshake.ServerHandshake; import com.cn.service.impl.SearchPersonServiceImpl; import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URISyntaxException; public class WebsocketClient { private static Logger logger = Logger.getLogger(WebsocketClient.class); public static WebSocketClient client; public static void main(String[] args) { try { client = new WebSocketClient(new URI("ws://192.168.4.100:8080/project/websocket"),new Draft_6455()) { @Override public void onOpen(ServerHandshake serverHandshake) { logger.info("握手成功"); } @Override public void onMessage(String msg) { logger.info("收到訊息=========="+msg); if(msg.equals("over")){ client.close(); } } @Override public void onClose(int i, String s, boolean b) { logger.info("連結已關閉"); } @Override public void onError(Exception e){ e.printStackTrace(); logger.info("發生錯誤已關閉"); } }; } catch (URISyntaxException e) { e.printStackTrace(); } client.connect(); logger.info(client.getDraft()); while(!client.getReadyState().equals(WebSocket.READYSTATE.OPEN)){ logger.info("正在連線..."); } //連線成功,傳送資訊 client.send("哈嘍,連線一下啊"); } }