Kamaloka - реалізація AMQP в JavaScript

Починають з'являтись все цікавіші проекти з сфери інтеграції різних технологій.
Kamaloka це реалізація AMQP протоколу для JavaScript. Якщо поєднати цю бібілотеку з транспортною бібліотекою, наприклад Orbited, можна отримати клієнти на бровсері які беруть участь в обміні повідомлень з брокерами повідомлень.
Технологічно це близька до Comet подібних технологій. Просто вона більш складніша, в міру використання AMQP.
Використовуватись може наприклад в ігрових проектах, або системах з живими даними.
Приклад реалізації:
<script type="text/JavaScript">
   Orbited.settings.port = 9000;
   amqp_broker_port = 7000;

   amqp_conn = amqp.Connection({host: 'localhost',
                                port: amqp_broker_port,
                                send_hook: function(msg) { // for debugging
                                                       append_msg('SENT', msg);
                                                  },
                                recive_hook: function(data) { // for debugging
                                                        append_msg('RECV', data);
                                                    }
                             });
    amqp_conn.start();

    // You should have your server generate a UUID since browser methods
    // are unreliable at best
    session = amqp_conn.create_session('not_a_great_id' + (new Date().getTime() + Math.random()));

    var fedoraproject = "org.fedoraproject-" + session.name;
    session.Queue('declare', {queue:fedoraproject, exclusive:true});
    session.Exchange('bind', {exchange: "amq.topic",
                              queue: fedoraproject,
                              binding_key: "org.fedoraproject.#"});

    // Bind each queue to the control queue so we know when to stop
    session.Exchange('bind', {exchange:"amq.topic",
                              queue: fedoraproject,
                              binding_key:"control"});
</script>
  • +5
  • 21 вересня 2009, 12:12
  • zenyk

Коментарі (4)

RSS згорнути / розгорнути
+
0
гм… Orbitd це якраз Comet-сервер, до речи, погано розвиваеться, якщо взагали розвиваеться. Тобто получается, що comet виступае транспортним ривнем для AMQP. ми якраз до цього придивляемось, сумисно з брокером Apache Qpid
avatar

aleks_raiden

  • 21 вересня 2009, 16:08
+
0
до comet-оподібних речей слід обережно ставитись… якщо доцільно, слід переконатись що long-push не є можливим чи доцільним, а потім вже дивитись до comet-ів

якщо orbited як варіант поганий — можна подивитись до інших транспортних речей, наприклад JBoss Netty
там і вбудовані останні штучки типу Google Protocol Buffers і доросла стабільність
avatar

zenyk

  • 21 вересня 2009, 16:37
+
0
помоему лонгпуш це просто ризновид комету. и яки саме пидводни камени е, можна детальнише? ми зара стоимо перед вибором якраз…

нетти — просто крутий фреймворк мережевий NIO, там як я памятаю нема комету з коробки, для того э Grizzle & Atmosphere фреймворк
avatar

aleks_raiden

  • 21 вересня 2009, 17:20
+
0
соррі, я мав на увазі лонг пулл (long pull), а не пуш
якось робив прототип чат системи на базі XMPP, то там є цікаве рішення — XMPP Over BOSH
JavaScript Jabber/XMPP бібліотека JSJaC підтримує цю річ, той же чат в Facebook реалізований з використання подібної концепції.

Можна організувати XMPP PubSub як тип черги Topic, і архітектурно симулювати Queue тип черги.

Замітка на Highscalability.com на цю тему
avatar

zenyk

  • 22 вересня 2009, 12:09

Тільки зареєстровані й авторизовані користувачі можуть залишати коментарі.