2016-05-01 9 views
0

私はチャットアプリケーションを作成していますが、実際にプライベートメッセージングとチャネルメッセージング、つまりグループメッセージングを実装しています。私は、ユーザーが接続するときに各ユーザーにルームIDを持つ部屋を割り当てているアプローチを採用しました。さらに、私は部屋に基づいてメッセージを発信しています。私が知りたいことは、これが悪い習慣であるかどうかです。はいの場合、どうですか?ありがとうございました。各ユーザーIDのソケットルーム?

答えて

1

あなたのソケットを部屋に分割することは悪いことではありません。 Socket.io自体はrooms and namespaceの機能を提供しており、最新バージョンではこの使用方法がますます重視されています。

とにかく、詳細を知るように、ネイティブのjavascript Websocketオブジェクトを使用することをお勧めします。コードのパフォーマンスとコントロールが向上します。 socket.ioを使用する理由は、時間の経過とともにあまり関連性がなくなります(IE8、フラッシュ、httpポーリング...)。

部屋を使用しているのは、クライアントソケットを分割するだけです。オブジェクト内の配列にインデックスを付けることで、これを行うことができます。

NodeJSについては、wsとします。

+0

ありがとうございます。私は間違いなくWebソケットを調べます。私は完全にではなく、それについて読んだ。私のプロジェクトはMean Stackにありますので、ほとんどの人がsocket ioをお勧めしました。実装中にいくつかの問題も見てきました。さらに、ドキュメンテーションも不足しています。私がソケットを使用したのは初めてだったかもしれません。私はプロジェクトに追加するいくつかの機能があります。あなたはウェブソケットがより良い方法を強調できますか?現在のものの代わりに使用すれば、どのような柔軟性が得られますか? –

+0

また、私はあなたが言及した他のアプローチを選択しました。つまり、ソケットIDを配列に保存してそれらに送信しますが、それは未熟で複雑なアプローチのようでした。クライアントが切断されたときにも、そのアプローチに関する問題について読んでいます。 –

+0

Socket.ioは、クライアントと互換性があるたびにネイティブwebsocketを使用します。これは単なる追加層であり、それほど有用ではない。私は個人的にチームの反応が少なく、プロジェクトがゆっくりと死ぬと思う。このような状況では、ネイティブ機能を選択することは明らかです。あなたが困難に遭遇した場合、それは不安定な図書館のためではありません。メッセージを送信するアプローチに関しては、socket.ioがシーンの背後で何をしているのかを正確に知ることができます。ソケットをソケットに保存してそれらに放出します。私は見る。 –

0

明らかに、問題で使用されている技術は悪い習慣とはみなされません。多くの人がこの技術を使い始め、部屋を利用しています。しかし、ユーザーIDの代わりに、ユーザー名または電子メールをソケットとして割り当てられた各ユーザーの目的に使用することができます。これは、クライアント側でIDを取得することは好ましくないからです。

関連する問題