I am trying to create a simple chat application using AMQP, Websockets and Ruby. I understand that this is not a good example of using AMQP, but I would like to understand where I am going wrong.
Below is my amqp server code
require 'rubygems' require 'amqp' require 'mongo' require 'em-websocket' require 'json' class MessageParser
I use status to indicate whether the incoming message is a message for the current chat or for a status message that requires me to process responsibilities such as subscribing to a queue.
The problem I am facing is that when I send a message like socket.send(JSON.stringify({status:'message', message:'test', roomname:'Harry Potter'}))
exchange.publish' is called but it still doesn't get pushed via the ws.send` in the browser.
Is there anything fundamentally wrong with my understanding of EventMachine and AMQP?
Here is the paste for the same code http://pastie.org/private/xosgb8tw1w5vuroa4w7a
My code works as desired when I remove durable => true from queue = channel.queue(status[:username], :durable => true)
Below is a snippet of my Rails view that identifies the username and room name and sends it as part of the message through the Web.
Although the code works when I remove durable => true , I donβt understand why this affects the message being sent. I ask you to ignore part of the mongo, since it still does not play any role.
I would also like to know if my approach to AMQP is correct and its use
<script> $(document).ready(function(){ var username = '<%= @user.email %>'; var roomname = 'Bazingaa'; socket = new WebSocket('ws://127.0.0.1:8080/'); socket.onopen = function(msg){ console.log('connected'); socket.send(JSON.stringify({status:'status', username:username, roomname:roomname})); } socket.onmessage = function(msg){ $('#chat-log').append(msg.data); } }); </script> <div class='block'> <div class='content'> <h2 class='title'><%= @room.name %></h2> <div class='inner'> <div id="chat-log"> </div> <div id="chat-console"> <textarea rows="5" cols="40"></textarea> </div> </div> </div> </div> <style> #chat-log{ color:#000; font-weight:bold; margin-top:1em; width:900px; overflow:auto; height:300px; } #chat-console{ bottom:10px; } textarea{ width:100%; height:60px; } </style>