문제

약 24 시간 동안 나는 프로젝트에서 어떤 그룹 방송 기술을 사용할 것인지 생각해 왔습니다.

기본적으로 내가 필요한 것은 다음과 같습니다.

  • 그룹 생성 (일부 백엔드 프로세스별로)
  • 모든 클라이언트의 방송 메시지 (1 : N, N : N)
  • (잠재적으로) 직접 메시지 (1 : 1)
  • (중요) 내 백엔드로 고객을 인증/승인합니다 (예 : 어떤 종류의 HTTP API를 통해)
  • 백엔드 프로세스 (또는 서버 플러그인)를 통해 특정 클라이언트를 시작할 수 있습니다.

다음은 다음과 같습니다.

  1. Ruby 또는 Haxe의 백엔드 관련 프로세스 (ES)
  2. JS+Haxe (Flash9)의 프론트 엔드 - 브라우저에서 이상적으로 80/443을 통해 의사 소통하지만 반드시 그런 것은 아닙니다.

따라서이 기술은 플래시와 바람직하게는 루비를 위해 Haxe에서 쉽게 접근 할 수 있어야합니다.

나는 RabbitMQ (또는 OpenAMQ), RabbitMQ+Stomp, Ejabberd, Ejabberd+Bosh, juggernaut에 대해 생각하고 있습니다 (Haxe Lib를 쓸 필요가 있음).

아이디어/제안이 있습니까?

도움이 되었습니까?

해결책

Flash Dev를 수행하려는 경우 SmartFoxServer를 보셨습니까? 그것은 당신이 원하는 모든 것을 가지고 있으며 기본 플래시 클라이언트 라이브러리가 있습니다. 프로젝트에서 10 만 명의 연결된 사용자를 관리하기 위해 사용했습니다.

http://www.smartfoxserver.com/

다른 팁

유리,

Rabbitmq, Haxe 및 AS3 : http://geekrelief.wordpress.com/2008/12/15/hxamqp-amqp-with-haxe/

Rabbitmq, Ruby 및 ACLS : http://pastie.org/pastes/368315

또한 백바인트 그룹을 관리하기 위해 RabbitMQ와 Nanite를 사용하는 것을보고 싶을 수도 있습니다. http://brainspl.at/articles/2008/10/11/merbcamp-keynote-and-introducing-nanite

당신은 필요하다고 말합니다 :

* broadcast messages by any client (1:N, N:N)
* (potentially) direct messages (1:1)

RabbitMQ를 사용하여 쉽게 수행 할 수 있습니다. RabbitMQ는 '직접'교환과 함께 1 : N Pubsub 및 1 : 1 메시징을 모두 지원합니다.

직접 교환 패턴은 다음과 같습니다.

모든 게시자 (Group Member)는 "yurii"와 같은 '라우팅 키'가있는 브로커에게 메시지를 보냅니다. RabbitMQ는이 키를 라우팅 테이블 (일명 "Exchange")의 구독 바인딩과 일치시킵니다. 각 바인딩은 주어진 라우팅 키가있는 메시지에 대한 관심을 표현하여 대기열에 의한 구독을 나타냅니다. 라우팅 및 바인딩 키가 일치하면 메시지가 클라이언트 (그룹 멤버)의 후속 소비를 위해 대기열로 라우팅됩니다. 이것은 1 : n 및 1 : 1 사례에 대해 작동합니다. 1 : n에 N : N 건물로.

라우팅 모델 소개 : http://blogs.digitar.com/jjww/2009/01/rabbits-and-warrens/

일반 소개 : http://google-ukdev.blogspot.com/2008/09/rabbitmq-tech-talk-at-google-london.html

당신은 또한 필요합니다 :

* (important) authenticate/authorize clients with my own backend (say, through some kind of HTTP API)

이 경우 ACLS 코드를 참조하십시오 (위의 링크). RabbitMQ에는 HTTP 인터페이스도 있지만 HTTP 프론트 엔드와 ACL 코드를 아직 결합하지 않았습니다. 그래도 Oyu를 뒤로 유지해서는 안됩니다. 이 주제가 최근에 이야기 한 RabbitMQ-Discuss 목록에 오십시오.

당신은 또한 필요합니다 :

* create groups (by some backend process)
* to be able to kick specific clients by backend process (or server plugin)

나는 Nanite 및 Workling과 같은 도구가 어떻게이를 수행하는지 살펴 보는 것이 좋습니다. 그룹 제작은 일반적으로 메시징 시스템의 일부가 아니며 대신 RabbitMQ에서 구독을 사용하여 라우팅 패턴을 만듭니다. 소비 대기열을 교환에 바인딩하는 데 사용한 키로 메시지를 보내서 특정 클라이언트를 시작할 수 있습니다.

도움이 되었기를 바랍니다!

알렉시스

그룹 커뮤니케이션 간단한 메시징 / 대기열과 약간 다른 짐승입니다.

대부분의 그룹 커뮤니케이션 시스템은 상업적이지만 두 가지 (내가 알고있는) 오픈 소스 / 무료가 있습니다.

이 두 가지 모두 루비 바인딩을 찾기가 어려울 수 있습니다. 스프레드 기반 클라이언트가 이해가되지 않도록 클라이언트를 신뢰할 수있는 것으로 보게 될 것입니다. 브라우저 프론트 엔드가 백엔드의 그룹 클라이언트와 대화하도록해야합니다.

우리는 ActiveMQ를 사용하고 있습니다. HR 시스템을 공급하는 공급 업체는 Ruby/ActiveMQ를 사용하여 브로드 캐스트 및 업데이트를받습니다.

http://activemq.apache.org/cross-language-clients.html

Stomp 프로토콜을 지원하는 다른 오픈 소스 메시지 중개인은 OpenMQ이며, 이는 Glassfish V3 및 Glassfish 2.1.1에 포함되어 있지만 독립형으로 작동하며 곧 JBoss 메시지 브로커 인 Hornetq v2.1입니다. OpenMQ는 RPC 스타일 커뮤니케이션에 유용한 임시 대기열을 지원하지만 ActiveMQ는 Stomp 어댑터에서도 흥미로운 기능을 제공합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top