Java源码示例:org.kurento.jsonrpc.client.JsonRpcClientWebSocket
示例1
public OpenViduClient(String wsUri) {
this(new JsonRpcClientWebSocket(wsUri, new JsonRpcWSConnectionListener() {
@Override
public void reconnected(boolean sameServer) {
}
@Override
public void disconnected() {
log.warn("JsonRpcWebsocket connection: Disconnected");
}
@Override
public void connectionFailed() {
log.warn("JsonRpcWebsocket connection: Connection failed");
}
@Override
public void connected() {
}
@Override
public void reconnecting() {
log.warn("JsonRpcWebsocket connection: is reconnecting");
}
}, new SslContextFactory(true)));
}
示例2
public KurentoRoomClient(String wsUri) {
this(new JsonRpcClientWebSocket(wsUri, new JsonRpcWSConnectionListener() {
@Override
public void reconnected(boolean sameServer) {
}
@Override
public void disconnected() {
log.warn("JsonRpcWebsocket connection: Disconnected");
}
@Override
public void connectionFailed() {
log.warn("JsonRpcWebsocket connection: Connection failed");
}
@Override
public void connected() {
}
@Override
public void reconnecting() {
log.warn("JsonRpcWebsocket connection: is reconnecting");
}
}, new SslContextFactory(true)));
}
示例3
@Test
public void givenClientWithHeartbeat_whenWaitMoreThanIdleTimeout_thenClientIsNotDisconnected()
throws IOException, InterruptedException {
final EventWaiter reconnecting = new EventWaiter("reconnecting");
final EventWaiter reconnected = new EventWaiter("reconnected");
JsonRpcWSConnectionAdapter listener = new JsonRpcWSConnectionAdapter() {
@Override
public void reconnecting() {
reconnecting.eventReceived();
}
@Override
public void reconnected(boolean sameServer) {
reconnected.eventReceived();
}
};
try (JsonRpcClientWebSocket client = new JsonRpcClientWebSocket(
"ws://localhost:" + getPort() + "/reconnection", listener)) {
client.setIdleTimeout(5000);
client.enableHeartbeat(4000);
for (int i = 0; i < 5; i++) {
client.sendRequest("sessiontest", String.class);
Thread.sleep(10000);
}
}
assertThat(reconnecting.isEventRecived()).as("Event reconnecting received").isEqualTo(false);
assertThat(reconnecting.isEventRecived()).as("Event reconnected received").isEqualTo(false);
}
示例4
@Test
public void test() throws IOException, InterruptedException {
JsonRpcClientWebSocket client = (JsonRpcClientWebSocket) createJsonRpcClient("/reconnection");
client.setSendCloseMessage(true);
Assert.assertEquals("new", client.sendRequest("sessiontest", String.class));
Assert.assertEquals("old", client.sendRequest("sessiontest", String.class));
Assert.assertEquals("old", client.sendRequest("sessiontest", String.class));
String sessionId = client.getSession().getSessionId();
client.close();
JsonRpcClient client2 = createJsonRpcClient("/reconnection");
client2.connect();
client2.setSessionId(sessionId);
Assert.assertEquals("new", client2.sendRequest("sessiontest", String.class));
Assert.assertEquals("old", client2.sendRequest("sessiontest", String.class));
}
示例5
@Test
public void givenReconnectedSession_whenSessionIdIsRemovedFromClient_thenServerUsesWebSocketAsSessionIdSource()
throws IOException, InterruptedException {
try (JsonRpcClientWebSocket client = new JsonRpcClientWebSocket(
"ws://localhost:" + getPort() + "/reconnection")) {
assertThat(client.sendRequest("sessiontest", String.class)).isEqualTo("new");
assertThat(client.sendRequest("sessiontest", String.class)).isEqualTo("old");
assertThat(client.sendRequest("sessiontest", String.class)).isEqualTo("old");
String sessionId = client.getSession().getSessionId();
client.closeNativeClient();
// Wait for reconnection
Thread.sleep(100);
assertThat(client.sendRequest("sessiontest", String.class)).isEqualTo("old");
assertThat(client.sendRequest("sessiontest", String.class)).isEqualTo("old");
client.setSessionId(null);
assertThat(client.sendRequest("sessiontest", String.class)).isEqualTo("old");
assertThat(client.sendRequest("sessiontest", String.class)).isEqualTo("old");
assertThat(client.getSession().getSessionId()).isEqualTo(sessionId);
}
}
示例6
@Test
public void givenJsonRpcClientAndServer_whenServerIsDown_thenClientKeepsReconnectingUntilServerIsUpAgain()
throws Exception {
final EventWaiter reconnecting = new EventWaiter("reconnecting");
final EventWaiter reconnected = new EventWaiter("reconnected");
JsonRpcWSConnectionAdapter listener = new JsonRpcWSConnectionAdapter() {
@Override
public void reconnecting() {
reconnecting.eventReceived();
}
@Override
public void reconnected(boolean sameServer) {
reconnected.eventReceived();
}
};
try (JsonRpcClientWebSocket client = new JsonRpcClientWebSocket(
"ws://localhost:" + getPort() + "/reconnection", listener)) {
client.setTryReconnectingForever(true);
client.enableHeartbeat(2000);
Thread.sleep(1000);
client.connect();
log.debug("--------> Client connected to server");
server.close();
log.debug("--------> Server closed");
reconnecting.waitFor(3000);
log.debug("--------> Event reconnecting received in client");
assertThat(reconnected.isEventRecived()).isFalse();
// Wait some time to verify client is reconnecting
Thread.sleep(20000);
assertThat(reconnected.isEventRecived()).isFalse();
log.debug("--------> Starting new server after 20s");
startServer();
log.debug("--------> New server started");
log.debug("--------> Waiting 10s to client reconnection");
reconnected.waitFor(10000);
log.debug("--------> Client reconnected event received");
}
}
示例7
@Test
public void givenJsonRpcClientAndServer_whenServerIsDown_thenClientKeepsReconnectingUntilMaxTime()
throws Exception {
final EventWaiter reconnecting = new EventWaiter("reconnecting");
final EventWaiter disconnected = new EventWaiter("disconnected");
JsonRpcWSConnectionAdapter listener = new JsonRpcWSConnectionAdapter() {
@Override
public void reconnecting() {
reconnecting.eventReceived();
}
@Override
public void disconnected() {
disconnected.eventReceived();
}
};
try (JsonRpcClientWebSocket client = new JsonRpcClientWebSocket(
"ws://localhost:" + getPort() + "/reconnection", listener)) {
client.setTryReconnectingMaxTime(7000);
client.enableHeartbeat(2000);
Thread.sleep(1000);
client.connect();
log.debug("--------> Client connected to server");
server.close();
log.debug("--------> Server closed");
reconnecting.waitFor(3000);
log.debug("--------> Event reconnecting received in client");
assertThat(disconnected.isEventRecived()).isFalse();
Thread.sleep(7000);
disconnected.waitFor(20000);
} finally {
startServer();
}
}
示例8
@Test
public void givenReconnectingClient_whenClientIsClosed_thenClientIsNotReconnectedWhenServerIsUpAgain()
throws Exception {
final EventWaiter reconnecting = new EventWaiter("reconnecting");
final EventWaiter reconnected = new EventWaiter("reconnected");
final EventWaiter disconnected = new EventWaiter("disconnected");
JsonRpcWSConnectionAdapter listener = new JsonRpcWSConnectionAdapter() {
@Override
public void reconnecting() {
reconnecting.eventReceived();
}
@Override
public void reconnected(boolean sameServer) {
reconnected.eventReceived();
}
@Override
public void disconnected() {
disconnected.eventReceived();
}
};
try (JsonRpcClientWebSocket client = new JsonRpcClientWebSocket(
"ws://localhost:" + getPort() + "/reconnection", listener)) {
client.setTryReconnectingForever(true);
client.enableHeartbeat(2000);
Thread.sleep(1000);
client.connect();
log.debug("--------> Client connected to server");
server.close();
log.debug("--------> Server closed");
reconnecting.waitFor(3000);
log.debug("--------> Event reconnecting received in client");
assertThat(reconnected.isEventRecived()).isFalse();
// Wait some time to verify client is reconnecting
Thread.sleep(20000);
assertThat(reconnected.isEventRecived()).isFalse();
log.debug("--------> Starting new server after 20s");
client.close();
disconnected.waitFor(20000);
log.debug("--------> Client is disconnected");
startServer();
log.debug("--------> New server started");
Thread.sleep(10000);
assertThat(reconnected.isEventRecived()).isFalse();
log.debug("--------> Client is not reconnected after 10s after closing it");
}
}
示例9
@Test
public void test() throws IOException, InterruptedException {
JsonRpcClient client = new JsonRpcClientWebSocket(
"ws://localhost:" + getPort() + "/reconnection2");
client.setServerRequestHandler(new DefaultJsonRpcHandler<JsonElement>() {
@Override
public void handleRequest(Transaction transaction, Request<JsonElement> request)
throws Exception {
log.debug("Receive request in client: " + request);
transaction.sendResponse("world");
log.debug("Response sent from client");
}
});
Assert.assertEquals("new", client.sendRequest("sessiontest", String.class));
waitForServer();
Assert.assertEquals("old", client.sendRequest("sessiontest", String.class));
waitForServer();
log.debug("SessionId: " + client.getSession().getSessionId());
JsonRpcClientWebSocket webSocketClient = (JsonRpcClientWebSocket) client;
webSocketClient.closeNativeClient();
Thread.sleep(100);
Assert.assertEquals("old", client.sendRequest("sessiontest", String.class));
waitForServer();
log.debug("Acquired");
client.close();
}