2015-10-26 25 views
6

Cách đóng kết nối websocket bằng API WebSocket của Java? Tôi đã sử dụng Java websocket API cho cả hai điểm cuối máy chủ và máy khách. Ứng dụng đang hoạt động tốt. Nhưng tôi không biết cách đóng websocket, trước khi thread chính kết thúc.Đóng kết nối websocket với Java

Đây là ClientEndpoint tôi

package websocket.client; 

import java.io.IOException; 

import javax.websocket.MessageHandler; 
import javax.websocket.OnError; 
import javax.websocket.OnMessage; 
import javax.websocket.OnOpen; 
import javax.websocket.Session; 

@ClientEndpoint 
public class EchoClient { 
    Session session; 

    //request 
    @OnOpen 
    public void onOpen(Session session, EndpointConfig config) { 
     System.out.println("Connected to endpoint: " + session.getBasicRemote()); 
     this.session = session; 
     sendMessage("Welcome to WebSocket"); 
    } 

    //response 
    @OnMessage 
    public void onMessage(String text) { 
     System.out.println("Received response in client from server: " + text); 
    } 

    @OnError 
    public void onError(Session session, Throwable t) { 
     t.printStackTrace(); 
    } 

    private void sendMessage(String message) { 
     System.out.println("Sending message from client to server: " + message); 
     System.out.println(session); 
     try { 
      session.getBasicRemote().sendText(message); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Và tôi sử dụng đoạn mã sau để bắt đầu ClientEndPoint

import java.io.IOException; 
import java.net.URI; 

import javax.websocket.ContainerProvider; 
import javax.websocket.DeploymentException; 
import javax.websocket.WebSocketContainer; 

import websocket.client.EchoClient; 

public class WebSocketDemo { 
    public static void main(String[] args) { 
     String uri = "ws://localhost:8080/websocket"; 
     System.out.println("Connecting to " + uri); 
     WebSocketContainer container = ContainerProvider.getWebSocketContainer(); 
     try { 
      container.connectToServer(EchoClient.class, URI.create(uri)); 
     } catch (DeploymentException | IOException e) { 
      e.printStackTrace(); 
     } 
     try { 
      Thread.sleep(5000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

PS: Tôi đã không sử dụng JavaScript.

Trả lời

5

Phương thức 'connectToServer trả về websocket Session đối tượng có twoclose phương pháp. Điều đó sẽ làm các trick.

+0

Tôi sẽ dùng thử. Tôi cũng có thể sử dụng đối tượng 'Session' được chuyển thành tham số cho phương thức' onOpen' của '@ ClientEndpoint' để đóng kết nối không? – UnahD

+0

@dazoh của khóa học –

+0

Cảm ơn rất nhiều người! – UnahD

Các vấn đề liên quan