2010-11-22 10 views
2

Je souhaite créer un serveur d'interrogation longue simple dans node.js où la communication sera basée sur les requêtes jsonp. Je comprends que le client fait une requête et que le serveur conserve la réponse jusqu'à ce que certaines données soient prêtes ou qu'un certain délai soit atteint, puis une nouvelle demande du client est faite pour que les choses continuent. Une fois la première requête effectuée, l'ID de session est généré et stocké pour conserver la liste des clients connectés activement. Maintenant, comment puis-je identifier que toute autre demande, après la première réponse du serveur au client, appartient à quel client dans ma liste de connexions actives?Principe du serveur d'interrogation longue (identification du client)

Je peux m'imaginer faire comme ceci: la première réponse du serveur envoie un ID de session assigné au client, puis il est identifié en fonction de cet ID lors des prochaines requêtes. Mais je pense que cette approche peut être facilement exploitée et vulnérable au vol d'identité.

Répondre

1

J'utiliserais un cookie.

La prochaine étape pour moi serait d'utiliser SSL, si j'étais inquiet au sujet du vol d'identité.

0

Au lieu d'écrire tout ce code vous-même, je vous suggère d'aller avec un travail et solution testé:
https://github.com/LearnBoost/Socket.IO-node
https://github.com/LearnBoost/Socket.IO

Socket.IO gère tous les trucs de connexion pour vous, et il sélectionne automatiquement la meilleure méthode de connexion possible, comme WebSockets et retombe gracieusement si elles ne sont pas disponibles.

+0

Je sais à propos de Socket.IO, mais ce n'est que des trucs de passe-temps créés pour mon plaisir si vous savez ce que je veux dire :). – yojimbo87

+0

Eh bien, laissez-moi vous dire que JSONP est le pire choix possible, c'est la façon la moins sûre de faire de la messagerie, puisqu'elle exécute directement le JavaScript (y compris n'importe quelle fonction). –

+0

Le problème est dans la même politique d'origine et JSONP est (à ma connaissance) le seul moyen qui fonctionne sur tous les navigateurs. Même google l'utilise pour diverses choses (par exemple http://googlecode.blogspot.com/2010/11/instant-previews-under-hood.html). – yojimbo87