rsocket-js
rsocket-js copied to clipboard
rsocket send duplicate requests (4) each "keepAlive" interval
Hello everyone,
I don't know if this is normal, but on each cycle (keepAlive interval) rsocket sends duplicate empty requests like this : (two requests and two responses in same interval)
req > 00000000: 0000 0000 0c80 0000 0000 0000 0000 ..............
res < 00000000: 0000 0000 0c80 0000 0000 0000 0000 ..............
req > 00000000: 0000 0000 0c80 0000 0000 0000 0000 ..............
res < 00000000: 0000 0000 0c80 0000 0000 0000 0000 ..............
for this example , keepAlive = 10000, so every 10 seconds. What's weird is that these aren't KEEPALIVE Frame (0x03)

Front Code :
const setupOptions = {
keepAlive: 10000,
lifetime: 180000,
dataMimeType: 'application/json',
metadataMimeType: 'message/x.rsocket.routing.v0',
};
const transportOptions = {
url: 'ws://localhost:7000/rsocket',
wsCreator: (url: string) => {
return new WebSocket(url);
},
};
// Create an instance of a client
const rsocketClient = new RSocketClient({
serializers: { data: JsonSerializer, metadata: IdentitySerializer },
setup: setupOptions,
transport: new RSocketWebSocketClient(transportOptions),
});
rsocketClient.connect().subscribe({
onComplete: (socket) => {
console.log('Connected');
},
onError: (error) => console.error(error),
onSubscribe: (cancel) => {
console.log('onSubscribe OK');
},
});
Back Code (it is not important because the problem is in the connection phase) :
@Controller
public class RsocketServerController {
@Autowired
ObjectMapper objectMapper;
@SuppressWarnings("unused")
private static final Logger log = LoggerFactory.getLogger(RsocketServerController.class);
private static final Map<String, RSocketRequester> REQUESTER_MAP = new HashMap<>();
@MessageMapping("sayHello") // request-response
Mono<String> sayHello(/* @Payload */ String message) { // Hooks.onErrorDropped(()->{}) ;
System.out.println("Received request-response message: {}" + message);
String response;
try {
response = objectMapper.writeValueAsString("You said: " + message);
return Mono.just(response).log();
} catch (JsonProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return Mono.empty();
}
}
}
Network activity :
Environment + RSocket version(s) used:
OS: Linux: Manjaro
Front: VueJs 3 Webpack 5 + Typescript "@types/rsocket-core": "^0.0.7", "@types/rsocket-tcp-client": "^0.0.1", "@types/rsocket-websocket-client": "^0.0.4", "@types/sockjs-client": "^1.5.1",
Back : openjdk version "16.0.2" 2021-07-20 OpenJDK Runtime Environment (build 16.0.2+7) OpenJDK 64-Bit Server VM (build 16.0.2+7, mixed mode) 'org.springframework.boot' version '2.5.4' + implementation 'org.springframework.boot:spring-boot-starter-rsocket' implementation 'org.springframework.boot:spring-boot-starter-websocket' implementation 'org.springframework.boot:spring-boot-starter-webflux'