Mensagens privadas usando sockjs-tornado
Eu implementei o recurso de bate-papo usando sockjs-tornado e poderia armazenar as mensagens no RethinkDB.
Você poderia me ajudar sobre como estabelecer um canal privado para mensagens no sockjs-tornado? (Refiro-me a uma conversa particular / individual)
Abaixo está a função on_message no código do meu servidor -
def on_message(self, message):
str=message
mg=str.split('#:#')
sender=1 # This is the sender user id
receiver=2 #This is the receiver user id - I need to implement session variables to have these id's so that I can use it here this way
ts=r.expr(datetime.now(r.make_timezone('00:00')))
connection = r.connect(host="192.x.x.x")
r.db("djrechat").table('events').insert({"usrs":mg[0],"msg":mg[1],"tstamp":ts,"snder":sender,"rcver":receiver}).run(connection)
log.info(message)
self.broadcast(self.participants, '{} - {}'.format(self.stamp(),message))
Atualmente, isso está sendo transmitido para todos os clientes conectados. Pode ser que eu deva ter um ID de canal e enviar mensagem apenas para os dois clientes que terão o mesmo ID de canal, mas como implementá-lo ou existe alguma solução melhor para isso?
No lado do cliente, tenho abaixo o javascript -
function connect() {
disconnect();
conn = new SockJS('http://localhost:8080/chat', ['websocket','xhr-streaming','iframe-eventsource','iframe-htmlfile','xhr-polling','iframe-xhr-polling','jsonp-polling']);
//log('Connecting.....');
conn.onopen = function() {
// log('Connected. (' + conn.protocol + ')');
log('Connected.');
};
conn.onmessage = function(e) {
log(e.data);
};
conn.onclose = function() {
log('Disconnected.');
conn = null;
};
}
Estou usando python 3.4 - Django 1.8.4 e Rethinkdb