Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2019, 11:49   #1
juli_sh
Новичок
Джуниор
 
Регистрация: 20.11.2019
Сообщений: 2
По умолчанию Помогите, пожалуйста, описать код

Нужно подробно описать код, а я только частично понимаю о чем идет речь. не пойму какая функция куда передает данные.
Здесь реализуется отправка сообщений от клиента на сервер приватно от одного к другому и в общий чат
Примерно понимаю где что , но так как мало опыта в JS и Socket.io - очень трудно дается, а очень хотелось бы разобраться
с этим кодом

Код:
$(document).ready(function() {
    var socket = new io.connect('http://localhost:8080');
 
    var supportChat = $("#support-chat"),
        messagesWr = supportChat.find("#messages"),
        messages = supportChat.find("#messages ul"),
        chatInput = supportChat.find("#chatInput"),
        status = supportChat.find("#status"),
        nick = supportChat.find("#nick");
        users = supportChat.find("#users ul"),
        online = supportChat.find("#online"),
        total = supportChat.find("#total"),
        selected = supportChat.find("#selected"),
        broadcast = supportChat.find("#broadcast"),
        name =supportChat.find("#name"),
        userId = '';
 
    init();
 
    function init() {
        chatInput.focus();
 
        chatInput.keydown(function(e) {
            if (e.keyCode === 13) { // Enter нажатие
 
                if (chatInput.val()) {
 
                    if (selected.text() == "все пользователи") {
                        socket.emit("chat", { msg: chatInput.val() });
                    } else {
                        socket.emit("private", { msg: chatInput.val(), to: selected.text() });
                    }
 
                    chatInput.val('');
                }
            }
        });
 
        broadcast.on('click', function() {
            selected.html('все пользователи');
            chatInput.focus();
        });
    }
 
    // If n < 10, add a leading 0
    function pad(n) {
      return ( n<10 ? '0'+ n : n);
    }
 
    function writeMessage(message) {
        var currentDate = new Date(),
            time = pad(currentDate.getHours()) +":"+ pad(currentDate.getMinutes()) +":"+ pad(currentDate.getSeconds());
 
        if (! message.isPrivate) {
            messages.append('<li>['+ time +'] <strong>'+ message.from +'</strong>: '+ message.msg +'</li>');
        } else {
            messages.append('<li class="private">['+ time +'] <em><strong>'+ message.from +'</strong>: '+ message.msg +'</em></li>');
        }
 
        messagesWr.prop('scrollTop', messagesWr.prop('scrollHeight'));
    }
 
    /*
    * WebSocket Events
    */
 
    socket.on('connect', function() {
        status.html("Соединение установлено");
    });
 
    socket.on('disconnect', function() {
        status.html("Соединение прервано");
    });
 
     socket.on('nick', function(data) {
        userId = data.nick;
 
        nick.html("Вы: "+ userId);
    });
 
    socket.on('users', function(data) {
        users.html('');
        data.users.forEach(function(nickname) {
            users.append('<li><a class="userNick" href="#" title="'+ (nickname == userId ? "Это Вы!" : "Отправьте личное сообщение этому пользователю") +'">'+ nickname +'</a></li>');
        });
 
        $('.userNick').on("click", function() {
            if ($(this).text() !== userId) {
                selected.html($(this).text());
            }
            chatInput.focus();
        });
 
        total.html(data.users.length);
    });
 
    socket.on('chat', function(data) {
        writeMessage({ from: data.from, msg: data.msg });
    });
 
    socket.on('private', function(data) {
        writeMessage({ from: data.from, msg: data.msg, isPrivate: true });
    });
});
juli_sh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можете пожалуйста описать строчку эту Ilya011 Помощь студентам 2 30.11.2016 16:45
С++ Описать класс студенческая группа. Помогите пожалуйста,возникли ошибки, не могу разобраться afilie Помощь студентам 1 29.01.2015 13:25
Помогите пожалуйста описать программу AkiraRudeGirl Общие вопросы C/C++ 4 28.12.2009 21:02
помогите пожалуйста описать две функции номак Паскаль, Turbo Pascal, PascalABC.NET 5 08.01.2008 21:31