そこで、ユーザーが別のルートにアクセスして、そのチャネルのみにサブスクライブできるように、em-websocket(または場合によってはGoliath )をセットアップしようとしています。たとえば、次のようになります。
example.com/channel_1
そこで開いているブラウザは、に公開されたメッセージのみを受信しますchannel_1
。実際、その時点までは、パラメータを使用するために解決するこのようなルートである必要はありません。だから私はAMQPを使用していて、直接交換とルーティングキーの概念があります。WebSocketの場合と類似したものはありますか?
Goliathサーバーは機能していますが、問題は、共有エンドポイントを使用しているため、WebSocket接続で開いているすべてのブラウザーが同じメッセージを受信していると思うことです。これが私が行っていることです。
channel.queue(params['channel'], :auto_delete => true).subscribe do |payload|
config['channel'].push(payload)
end
したがって、この例ではAMQPを使用していますが、これは引き続き使用したいのですが、問題は、各クライアントが再インスタンス化EM::Channel.new
され、メッセージがそのチャネルにプッシュされることです。複数のクライアントがどのように存在するかがわかりません。さまざまなチャネルにサブスクライブしました。
これを理解したり、より適切なデザインパターンに導いたりするのに役立ちます。