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.
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
@dazoh của khóa học –
Cảm ơn rất nhiều người! – UnahD