2011-09-10 4 views
1

アーキテクチャに関するアドバイスが必要です。私はチェスサイトを構築し、マルチプレイヤー機能を追加したいと考えています。私は最近、URLの末尾のパスがどうなるのか、ここで質問しました。Websocketサーバーアーキテクチャ

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

私は今それを理解しています。だから、サーバーからのメッセージをすべてのログインしているユーザーに送信する機能が必要な場合は、ユーザー間のゲームを処理するためのものが必要であり、次にチャット用のものが必要です。

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'); 

これらの3つで、私はそれに応じてイベントを設定することができました。これはうまくいくように思えますが、それは正しい方法のようには見えません。私は戻ってくるメッセージが物事を分ける方法についての情報を持っていたと思うが、それは私が考えると過負荷になるだろう。

上記のように機能をどのように分離したいと考えていますか?

+0

自己ホスト型の.NETソリューションをお探しの場合は、以下の点が重要です。* [XSockets](http://xsockets.net) * [SuperWebSockets](http://superwebsocket.codeplex.com /) – leggetter

答えて

0

説明しているのは、同じ全体的なアプリケーションの実際のチャンネルとメッセージの種類です。より適切な(そして効率的な)ソリューションは、単一のURLへの単一のWebSocket接続を確立し、独自のメッセージとセッション管理を定義することだと思います。

Socket.IOがあなたのためのオプションである場合、このタイプの事例とレシピがたくさんあります。 Googleで "Socket.IO chat"、 "Socket.IO session"、 "Socket.IO authorization"などを検索してください。Socket.IO wikiはおそらく本当に良い場所です。

Socket.IOを使用しない場合でも、独自のメッセージとセッション管理を使用して1つの接続が必要な場合があります。この種のことについては、おそらくJSONメッセージを使用することです(チェス/チャットの帯域幅は問題にならないため)。ほとんどの言語では、ネイティブデータ型に対するJSONのシリアライズ/デシリアライゼーションが非常に簡単です。

+0

こんにちは。あなたの助けをありがとう。私は、JSONの形式でさまざまな機能を処理するというメッセージに沿って考えていたので、同じことを考えていました。さて、セッション管理のために、私はこのSocket.IOをチェックアウトする必要があります。あなたは "チャネル"と言うときこのコンテキストで、そのセッション管理ですか?どうもありがとう。 –

+0

@David Whitten、チャンネルは実際にアプリケーションのコンテキストで定義するものです。私。 IRCの意味では、チャンネルはあなたが接続しているチャンネル/部屋です。チェスサーバーでは、チャンネルはおそらくあなたが参加しているゲームです。セッション管理と認証のSocket.IOの例があり、アプリケーションサーバーはセッション/ユーザーをチャンネルにマッピングします。 – kanaka

+0

はい、少し苦労した後、私は何をする必要があるかを考え出しました。これは、javascriptのほんの少しで何ができるのか驚くほどです。 –

関連する問題