1.- La mejor forma, según mi experiencia, es hacer uso de algún servidor Javascript como NODE para correr el socket, y conectarse desde la página php tranquilamente, usar sockets PHP Es de lo peor que puedes hacer (Comprobado por mi) en cuanto a rendimiento más que nada.
2.- No todos lo permiten, sin embargo hay varios con la opción de correr aplicaciones nodejs, el problema es que luego de cierto tiempo de inactividad "Mueren", por lo que losdatos temporales no son conservados, y al iniciar/detener el socket muy seguido, los datos son inconsistentes, el rendimiento no es el mejor etc... Lo mejor sería tener un servidor aparte con el socket, dependiendo de tus necesidades hasta una droplet de 5$ de digitalocean o vultr te servirían.
Importante aclarar que hasta un hosting gratuito puede usar sockets si está bien programado, lo que no puede como tal es correr ese socket, espero darme a entender