Pergunta

Eu me sinto uma espécie pouco pouco confuso -. Por cerca de 24 horas eu estive pensando que grupo transmitindo a tecnologia para uso em meu projeto

Basicamente, o que eu preciso é:

  • criar grupos (por algum processo backend)
  • mensagens de difusão por qualquer cliente (1: N, N: N)
  • (potencialmente) mensagens diretas (1: 1)
  • (importante) autenticar / autorizar clientes com meu próprio back-end (por exemplo, através de algum tipo de HTTP API)
  • para ser capaz de chutar clientes específicos pelo processo de backend (ou plugin do servidor)

Aqui está o que eu vou ter:

  1. Back-end-relacionada processo (s) em Ruby ou Haxe
  2. Frontend em JS + Haxe (Flash9) -. No navegador, então idealmente se comunicar através de 80/443, mas não necessariamente

Assim, esta tecnologia terá de ser facilmente acessível em Haxe para Flash e de preferência Ruby.

Eu estive pensando sobre:. RabbitMQ (ou OpenAMQ), RabbitMQ + STOMP, ejabberd, ejabberd + BOSH, rolo compressor (com uma necessidade de escrever um lib Haxe para ele)

Todas as ideias / sugestões?

Foi útil?

Solução

Se você está indo fazer o Flash dev você olhou SmartFoxServer? Ele tem tudo que você quer e tem bibliotecas de cliente nativo do Flash. I usado em um projeto para gerenciar 10s de milhares de usuários conectados.

http://www.smartfoxserver.com/

Outras dicas

Yurii,

RabbitMQ, Haxe e as3: http: // geekrelief.wordpress.com/2008/12/15/hxamqp-amqp-with-haxe/

RabbitMQ, Ruby e ACLs: http://pastie.org/pastes/368315

Você também pode querer olhar usando Nanite com RabbitMQ para gerenciar grupos de back-end: http://brainspl.at/articles/2008/10/11/merbcamp-keynote-and-introducing-nanite

Você diz que precisa:

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

Você pode facilmente fazer as duas coisas usando RabbitMQ. RabbitMQ suporta ambos os casos, 1: N PubSub e 1: 1 de mensagens, com trocas 'directas'.

O padrão de troca direta é a seguinte:

Qualquer editor (membro do grupo) envia uma mensagem para o corretor com uma 'chave de encaminhamento', como "yurii". RabbitMQ corresponde a essa chave com ligações de subscrição na tabela de roteamento (aka "câmbio") para você. Cada ligação representa uma assinatura por uma fila, expressando interesse em mensagens com uma determinada chave de roteamento. Quando as teclas de roteamento e de ligação corresponder, a mensagem é então encaminhado para filas para posterior consumo pelos clientes (membros do grupo). Isso funciona para 1: N e 1: 1 casos; com N: N construção em 1:. N

Introdução ao modelo de roteamento: http: // blogs. digitar.com/jjww/2009/01/rabbits-and-warrens/

General Intro: http: //google-ukdev.blogspot.com/2008/09/rabbitmq-tech-talk-at-google-london.html

Você também exigem:

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

Por favor, veja o código ACLs para este (link acima). Há também uma interface HTTP para RabbitMQ mas nós ainda não ter combinado o front-end HTTP com o código ACL. Isso não deve segurar oyu volta embora. Por favor, venha para a lista RabbitMQ-discutir onde este tema tem sido falado recentemente.

Você também exigem:

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

Eu sugiro olhando como ferramentas como Nanite e Workling fazer isso. criação do grupo não é geralmente parte de um sistema de mensagens, em vez disso, em RabbitMQ, você cria roteamento padrões usando assinaturas. Você pode chutar clientes específicos, enviando mensagens a eles por qualquer tecla que eles usaram para vincular sua fila consumindo para a troca.

Espero que isso ajude!

alexis

Bem comunicação do grupo é um animal um pouco diferente do que simples mensagens / filas.

A maioria dos sistemas de comunicação em grupo são comerciais, mas há dois (que eu saiba) open-source / livre, você pode dar uma olhada em:

Ambos pode ser difícil de encontrar ligações rubi embora. Spread, e provavelmente OpenAIS, ver os clientes como confiável para um cliente baseado em browser não faz sentido. Você precisa de ter o seu navegador front-ends falar com um cliente grupo (s) no back-end.

Estamos usando ActiveMQ. Nosso fornecedor que fornece o nosso sistema de RH está usando Ruby / ActiveMQ para transmissão e receber atualizações.

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

Outros intermediários de mensagens open source que suportam o protocolo Stomp estão OpenMQ, que está incluído no GlassFish V3 e GlassFish 2.1.1, mas também funciona de forma autónoma, e logo a mensagem corretor JBoss, HornetQ V2.1. OpenMQ suporta filas temporárias que são úteis para a comunicação estilo RPC mas ActiveMQ oferece alguns recursos interessantes no adaptador Stomp também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top