1. 程式人生 > >Java服務端模擬websocket客戶端建立長連結之---WebSocketClient

Java服務端模擬websocket客戶端建立長連結之---WebSocketClient

    最近專案裡需要在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("哈嘍,連線一下啊");
       
    }
	
}