recebi uma resposta da lista de preparação do HAproxy, onde um usuário chamado "Baptiste" me forneceu este link:
essa configuração funciona perfeitamente com o socket.io (testado com todos os protocolos, exceto flashsockets). O que o faz funcionar é o conjunto de opções na diretiva padrão, as verificações para websockets nos backends e as verificações de cabeçalhos não são realmente necessárias e você pode definir sua própria ACL para o que precisar decidir se usar o backend que está executando o aplicativo socket.io ou não.
A versão estável do HAproxy não funciona com essa configuração, você precisa de um 1.5-devel10 ou mais recente para que ele funcione (usei a versão 1.5-devel14).