2017-10-20 33 views
0

Je crée un serveur de discussion qui utilise un protocole personnalisé pour communiquer avec les clients via des sockets. Le client envoie des chaînes spécifiques au serveur et le serveur doit effectuer une action appropriée basée sur ces messages non standard. Je ne peux pas modifier ce protocole et je n'ai aucun accès au code client sous-jacent. Ma question est, puis-je utiliser le paquet node.js socket.io pour alimenter la communication socket du serveur si je n'ai aucune idée de la façon dont le client gère son activité socket? Je demande parce que, en parcourant les documents socket.io, chaque fois que je pousse quelque chose à travers un socket, un 'événement' est associé à chaque action.Un serveur socket.io peut-il communiquer avec un client nonsocket.io?

Est-il possible d'envoyer un message très précis au client à partir du serveur avec cet 'événement' intégré? Suis-je préférable d'utiliser le paquet websockets?

+0

Je sais que ce n'est pas la technologie spécifique dont vous parlez, mais vous pourriez vous pencher sur les solutions WebRTC - vous trouverez même des didacticiels sur le serveur de discussion node.js. – theGleep

Répondre

1

un serveur peut socket.io communiquer avec un client non-socket.io

n ° Un serveur de requiert à la fois le protocole WebSocket pour l'initiation de la connexion et le format socket.io sur de ça. Ainsi, un serveur socket.io ne peut parler qu'à un client socket.io et vice versa.

Si votre client de discussion utilise un protocole personnalisé, vous devez implémenter un serveur TCP qui parle également ce protocole personnalisé (quel qu'il soit).

Si vous pouvez modifier le client, vous pouvez le modifier pour utiliser un client socket.io et ensuite vous pouvez envoyer vos messages de chat via socket.io où votre serveur socket.io peut alors recevoir ces messages.

Le client envoie des chaînes spécifiques au serveur et le serveur doit effectuer une action appropriée en fonction de ces messages non standard. Je ne peux pas modifier ce protocole et je n'ai aucun accès au code client sous-jacent. Ensuite, vous devez implémenter un serveur qui parle votre protocole client personnalisé en fonction du protocole sous-jacent pour le client. Il n'y a pas d'autre moyen de contourner cela. Je demande parce que, en lisant les documents socket.io, chaque fois que je pousse quelque chose à travers un socket, un «événement» est associé à chaque action.

Voici comment le calque socket.io fonctionne. Il envoie un message et des données (facultatives). Cela peut toujours être utilisé pour simplement envoyer des données en déclarant simplement un message data générique, puis en écoutant simplement le message data à l'autre extrémité. Mais, cela suppose que vous pouvez modifier le client et le serveur pour qu'ils fonctionnent de cette façon. Si vous ne pouvez pas modifier votre client pour utiliser le protocole socket.io, vous ne pouvez pas utiliser socket.io.

+0

Merci, réponse très décisive. Pourriez-vous me diriger vers une bibliothèque que je pourrais utiliser pour implémenter un serveur purement TCP avec mon propre protocole? Je pense "net" des premiers regards –