Search code examples
chatmeteorprivacy

Meteor : How to implement a private message in a chat room?


Actually I'm more interested in the techniques to use to achieve this task more than really building a chat system (which is an excellent concrete example). I see 2 parts:

  1. The client needs to get registered somewhere, and we then need a unique ID per client.
  2. The server should be able to send something to the client only from another client.

For the first part, I do not know how to get this unique id. Possibly using the new meteor auth kit ?

For the second part, I thought about building a per-client collection in which one and only one client will have access to, but it sounds heavy and In my opinion not really in the Meteor best practice. I then thought of adding a "from" and to "field" to a Message (see the regular chat example). This would do it but I'm wondering about the no privacy on them. Would a custom publish returning a filtered find do it or it is risky too i.e. would other client get the items too ? Something like:

Meteor.publish("message", function (clientID) {
  return Messages.find({"dest":clientID }, {});
});

Solution

  • The latest Meteor todos example uses the new auth system to identify private todo entries. I would imagine that you could use the same mechanism to identify the originator and recipient of a private message in a chat like system.

    Of course the filtering of which messages someone sees would need to be filtered on the server side to maintain privacy.