* @param content HTTP message
* @return {@link NextAction} instruction for {@link FilterChain}, how it should continue the execution
* @throws IOException TODO
*/
private NextAction handleHandshake(final FilterChainContext ctx, HttpContent content) {
final UpgradeRequest upgradeRequest = createWebSocketRequest(content);
upgradeRequest.getHeaders().put(Header.ProxyConnection.toString(), Arrays.asList(new String[]{"keep-alive"}));
upgradeRequest.getHeaders().put(Header.Connection.toString(), Arrays.asList(new String[]{"keep-alive"}));
// TODO: final UpgradeResponse upgradeResponse = GrizzlyUpgradeResponse(HttpResponsePacket)
final UpgradeResponse upgradeResponse = new TyrusUpgradeResponse();
final WebSocketEngine.UpgradeInfo upgradeInfo = serverContainer.getWebSocketEngine().upgrade(upgradeRequest, upgradeResponse);