¿Cuál es la forma más confiable de detectar si alguien se ha conectado directamente a mi conexión de socket en lugar de al navegador? Sé que podemos omitir todo eso, pero me di cuenta de que algunos WebSockets como tradingView devuelven 403 cuando se conectan directamente desde socket.io-client pero funcionan bien desde el navegador.
¿Cómo detecta eso y cómo puedo implementar eso para mi propio servidor socket.io?
No estoy seguro de cómo obtener el dispositivo/navegador/aplicación con el que está conectado el cliente, pero logré hacer algo así usando la consulta de protocolo de enlace de socket.io. Necesitaba distinguir entre administrador y cliente, así que en mi lado del cliente usé este código:
const socket = io({ query: { isAdmin: true, name: "GetSub Admin" }, // path: '/websockets', resource: '/websockets' });y en el lado del servidor usé
if (client.handshake.query.isAdmin == 'true') { admins.push({ id: client.id, name: client.handshake.query.name }); } else { users.push({ id: client.id, name: client.handshake.query.name });tal vez esto te ayude