Uso del servidor y cliente Socket.IO en diferentes subdominios

Tengo dos subdominios:

socket.mydomain.com: el servidor Socket.IOapp.mydomain.com: una aplicación web que me gustaría conectar a mi socket web.

En la página de inicio de app.mydomain.com, he vinculado el script del cliente Socket.IO y he creado con éxito un objeto IO, así:

<script src=https://socket.mydomain.com/socket.io/socket.io.js></script>

<script type=text/javascript>
  const socket = io();
  socket.on('message', data => console.log(data));
</script>

Sin embargo, en lugar de intentar conectarse asocket.mydomain.com, el cliente está intentando conectarseapp.mydomain.com. Porque no hay zócalo enapp.mydomain.com, falla y vuelve a intentarlo.

¿Hay alguna manera de conectar mi aplicación enapp.mydomain.com a mi zócalo ensocket.mydomain.com? ¿O es esto imposible?

Actualizar

La mayoría de las respuestas existentes relacionadas con esta pregunta ahora usan código obsoleto, porque Socket.IO se ha actualizado recientemente a 1.0 (1.4 de hecho). Sin embargo, incluso teniendo en cuenta estos cambios de código,parece como Socket.IO no permite lo que intento hacer.

Cuando Socket.IO realiza la conexión inicial al servidor, envía un XHR con elwithCredentials ajustes establecidos en verdadero. Pero no puedes tenerwithCredentials establecido en verdaderoy permitir CORS en el servidor. Entonces parece que mi pregunta es en realidad, '¿Hay alguna forma de evitar este problema?'

Respuestas a la pregunta(1)

Su respuesta a la pregunta