2011-09-10 2 views
1

Besoin de conseils sur l'architecture. J'ai construit un site d'échecs, et je veux ajouter des capacités multijoueurs. J'ai récemment posé une question ici de ce que fait le chemin à la fin de l'URL ne comme dans:Websocket Server Architecture

"ws://<%= Request.Url.Host %>:<%= WebSocketPort %>/sample" 

Je comprends maintenant. Donc, si j'avais besoin de la capacité d'envoyer uniquement des messages du serveur à tous les utilisateurs connectés, alors j'ai besoin de quelque chose pour gérer les jeux entre les utilisateurs, puis un pour discuter peut-être, aurais-je quelque chose comme?

var ss = new WebSocket('ws://<%= Request.Url.Host %>:<%= SecureWebSocketPort %>/server'); 

var gs = new WebSocket('ws://<%= Request.Url.Host %>:<%= SecureWebSocketPort %>/games'); 

var cs = new WebSocket('ws://<%= Request.Url.Host %>:<%= SecureWebSocketPort %>/chat'); 

Puis sur ces trois, je pourrais configurer mes événements en conséquence. Cela semble fonctionner, cependant, cela ne semble pas être la bonne façon de procéder. Je suppose que le message que je renvoie pourrait avoir des informations sur la façon de séparer les choses, mais je pense que cela serait surchargé.

Avez-vous des idées sur la façon dont je pourrais vouloir séparer la fonctionnalité décrite ci-dessus?

+0

Si vous recherchez une solution .NET auto-hébergée, les éléments suivants peuvent vous intéresser: * [XSockets] (http://xsockets.net) * [SuperWebSockets] (http://superwebsocket.codeplex.com /) – leggetter

Répondre

0

Ce que vous décrivez est vraiment différent des canaux et des types de message pour la même application globale. Je pense qu'une solution plus appropriée (et efficace) consisterait à établir une connexion WebSocket unique à une seule URL, puis à définir vos propres messages et votre gestion de session.

Si Socket.IO est une option pour vous, il y a beaucoup d'exemples et de recettes pour ce genre de choses. Recherche sur google pour "Chat Socket.IO", "Session Socket.IO", "Socket.IO autorisation", etc. Le Socket.IO wiki est probablement un très bon endroit pour commencer.

Même si vous n'utilisez pas Socket.IO, vous souhaitez probablement toujours une connexion unique avec vos propres messages et la gestion de session. Pour ce genre de chose, l'utilisation de messages JSON est probablement le chemin à parcourir (puisque la bande passante pour les échecs/le chat ne va pas être un problème). La plupart des langages ont une sérialisation/désérialisation JSON très simple pour les types de données natifs.

+0

Salut à nouveau. Merci beaucoup pour votre aide. Je pensais aussi que le message traiterait les différentes fonctionnalités sous la forme de JSON, donc nous pensions la même chose là-bas. Maintenant, pour la gestion de session, je vais devoir vérifier ce Socket.IO. Quand vous dites "canaux", est-ce la gestion de session dans ce contexte? Merci beaucoup. –

+0

@David Whitten, les canaux seraient vraiment quelque chose que vous définiriez dans le contexte de votre application. C'est à dire. Au sens IRC, le canal correspond aux canaux/salles auxquels vous êtes connecté. Dans un serveur d'échecs, les canaux seraient probablement le (s) jeu (x) auquel vous participez. Il existe des exemples de gestion et d'authentification de session de Socket.IO et votre serveur d'application mapperait la session/l'utilisateur aux canaux. – kanaka

+0

Oui, après un peu de lutte, j'ai compris ce que je devais faire. C'est incroyable ce que l'on peut faire avec un peu de javascript. –