как реализовать функцию группового чата с помощью pusher

Я реализовал чат один на один, используя PUSHER (чат в реальном времени). Теперь я хочу реализовать функцию группового чата (т.е. многие ко многим). я видел некоторые методы, такие как

channel.bind('pusher:member_added', function(member) {
  // for example:
  add_member(member.id, member.info);
});
channel.bind('pusher:member_removed', function(member) {
  // for example:
  remove_member(member.id, member.info);
});

Но не понимаю, как создать группу с именем. а затем добавить участников в контакты.

Обновленный вопрос ------- У меня есть те же html-файлы, что и ниже, с именем client1.html, client2.html, client3.html, и они связаны с тем же каналом "присутствие -user», и теперь я могу видеть онлайн-членов внутри текстовой области «член», используя функциюmembers.each({}).

    <html>
     <head>
    <title>Pusher Test</title>
  <script src="//js.pusher.com/2.2/pusher.min.js" type="text/javascript"/>
  <script src="http://code.jquery.com/jquery-2.1.0.min.js"
        type="text/javascript"></script>
  <script type="text/javascript">
        $(document).ready(function() {
            var chatdata;
            var myuserId;
            console.log("ready!");
            $('#reset').click(function(event) {
                event.preventDefault();
                $('#loggs').val("");
            });
            $('#btnSendMessage').click(function(event) {
                event.preventDefault();
                chatdata = myuserId+": "+$("#textchat").val();
                console.log("in btn chatdata ==" + chatdata);
                if(chatdata==undefined){
                    chatdata ="";
                }
                var triggered = channel.trigger('client-messagereceive', {
                    data : chatdata
                });
                console.log("pusher:subscription_succeeded==>" + triggered);

                console.log("in btn chatdata ==" + chatdata);


                alert(count);
            });
            var msgLoggs;
            console.log("chatdata ==" + chatdata);
            var socketId;
            Pusher.log = function(message) {
                if (window.console && window.console.log) {
                    msgLoggs += message + "\n";
                    $("#loggs").val(msgLoggs);
                    window.console.log(message);
                }
            };


            var options = {
                    authEndpoint : "api/chat.json?x-api-key=06870559427d46de8789c39d50097301"
            }

            var pusher = new Pusher('c7afb8c403e31a7088e1', options);

            pusher.connect();
            pusher.connection.bind('connected', function(data) {
                socketId = pusher.connection.socket_id;
            });

            var channel = pusher.subscribe('presence-user');
            channel.bind('pusher:subscription_succeeded', function(members) {

                var membersOl;
                channel.members.each(function(member) {
                      var userId = member.id;
                      var userInfo = member.info;
                      membersOl+=userId+" ";
                    });

                var count = channel.members.count;
                var me = channel.members.me;
                  var userId = me.id;
                  myuserId=userId;
                  var userInfo = me.info;
                  var count = channel.members.count;
                  $("#member").val(membersOl)
                  console.log("count-->"+count);
                  var user = channel.members.get(userId);
                  console.log("user--->"+user.info);

                console.log("pusher:subscription_succeeded====userid" + userId+" userinfo "+userInfo.data);


            });

            channel.bind('pusher:subscription_error', function(status) {
                if (status == 408 || status == 503) {

                }
            });
            var datafromClient2;
            channel.bind('client-messagereceive', function(data) {
                datafromClient2+=data.data+"\n";
                $("#textchat").val(datafromClient2);
            });


        });
    </script>
    </head>
    <body>
        we are heree .....
        <form action="" method="post">
            <table>

                <tr>
                    <td>Enter your text</td>

                </tr>
                <tr>
                    <td><textarea name="textchat" id="textchat" rows="10" cols="80"></textarea></td>
                    <td><textarea name="member" id="member" rows="10" cols="80"></textarea></td>
                </tr>

                <tr>
                     <td colspan="2"><button name="btnSendMessage" id="btnSendMessage"
                            value="Send Message">Send to Message</button></td>
                </tr>
                <tr><td>Logger</td><td> <button id="reset">Reset </button></td></tr>
                <tr>
                     <td colspan="2"><textarea name="loggs" id="loggs" rows="40" cols="150"></textarea></td>
                </tr>
            </table>

        </form>
    </body>
    </html>

Теперь вопрос, когда я создаю новую группу, скажем, имя «Друзья», и для этого мне нужно будет подписаться на канал, скажем, «присутствие-друзья», и теперь я хочу добавить участников в эту группу из моих контактов, поэтому в этом случае, какие методы мне нужно будет использовать, чтобы добавить мои контакты в группу? Пожалуйста помоги!


person Kamini    schedule 07.10.2015    source источник
comment
Pusher не предоставляет механизма для управления группами. Вам нужно создать эту функциональность самостоятельно, а затем контролировать доступ к каналам присутствия. Затем вы можете использовать функцию members, чтобы получить список пользователей, которые находятся в сети, и получать информацию о пользователях, которые подключаются к сети и выходят из сети.   -  person leggetter    schedule 12.10.2015
comment
@leggetter хорошо, спасибо.   -  person Kamini    schedule 13.10.2015


Ответы (1)


Предоставленные вами образцы кода относятся к каналам присутствия. Их цель — обеспечить события, когда пользователь подписывается/отписывается от канала.

Чтобы создать групповой чат, вам просто нужно разрешить нескольким пользователям отправлять сообщения (инициировать события) на одном канале. На самом деле это не связано с использованием каналов присутствия.

person leggetter    schedule 08.10.2015
comment
Привет @leggetter, я обновил свой вопрос. пожалуйста, посмотрите. спасибо :) - person Kamini; 09.10.2015