使用java代码实现服务器与服务器之间建立websocket连接
时间: 2023-12-06 11:45:04 浏览: 92
在Java中,可以使用Java API for WebSocket(JavaAPI)实现服务器与服务器之间建立WebSocket连接。下面是一个简单的示例代码:
import java.net.URI;
import java.net.URISyntaxException;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import javax.websocket.ClientEndpoint;
import javax.websocket.CloseReason;
import javax.websocket.ContainerProvider;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.WebSocketContainer;
@ClientEndpoint
public class WebSocketClient {
private CountDownLatch latch;
@OnOpen
public void onOpen(Session session) {
System.out.println("Connected to server");
latch.countDown();
}
@OnMessage
public void onMessage(String message, Session session) {
System.out.println("Received message: " + message);
}
@OnError
public void onError(Throwable t) {
t.printStackTrace();
}
@OnClose
public void onClose(Session session, CloseReason closeReason) {
System.out.println("Disconnected from server: " + closeReason.getReasonPhrase());
}
public void connect(String serverUri) throws URISyntaxException, InterruptedException {
latch = new CountDownLatch(1);
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
container.connectToServer(this, new URI(serverUri));
latch.await(100, TimeUnit.SECONDS);
}
public static void main(String[] args) throws Exception {
WebSocketClient client = new WebSocketClient();
String serverUri = "ws://localhost:8080/websocket"; // WebSocket服务器的URI
client.connect(serverUri);
}
}
在这个示例中,我们定义了一个WebSocketClient
类,并使用@ClientEndpoint
注解标记它是一个WebSocket客户端。我们定义了一个CountDownLatch
用于等待连接完成,并实现了@OnOpen
、@OnMessage
、@OnError
和@OnClose
注解的方法来处理WebSocket的事件。
在connect()
方法中,我们使用WebSocketContainer
连接到WebSocket服务器,并使用latch.await()
等待连接完成。在main()
方法中,我们创建了一个WebSocketClient
对象,并调用connect()
方法来连接到WebSocket服务器。
请注意,WebSocket服务器的URI是通过ws://
协议指定的,而不是http://
或https://
协议。在这个示例中,我们假设WebSocket服务器正在本地主机上运行,并监听端口8080,在实际使用中,请根据实际情况修改URI。
希望能帮助到你!