1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/typ0520-cim

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Объяснение:

Эта версия с открытым исходным кодом является базовой версией с функциональностью только для отправки сообщений!

Введение:

В настоящее время на рынке существует множество систем мгновенного обмена сообщениями (IM) на основе протокола XMPP, таких как Openfire AndroidPN и т. д. Все они используют Apache Mina для разработки, но эти системы обычно требуют вторичной модификации и разработки. Более того, изменения всё ещё велики, я также просмотрел исходный код этих вещей и обнаружил, что структура кода не очень хороша, а ситуация с зависимостями слишком велика, и действительно трудно расширить. Так называемый протокол XMPP — это просто кто-то, кто использовал Mina для создания собственного протокола кодирования и декодирования сообщений. Проще говоря, это кодирование и декодирование сообщений в формате XML. Нам совершенно не нужно тратить слишком много усилий на изучение и исследование незрелых openfire и XMPP за границей. Мы можем полностью использовать Apache Mina для настройки нашего собственного коммуникационного протокола и дать ему собственное имя. Не нужно слепо поклоняться некоторым вещам за границей, важно понимать принципы, помните об этом, друзья!

Этот набор систем IM был разработан мной лично с использованием Apache Mina. Основные функции включают серверную часть и клиентскую часть, клиент-клиентский обмен мгновенными сообщениями, который может поддерживать любые типы сообщений, такие как текст, изображения, аудио и т.д. Серверная часть использует Struts2+spring3 и Apache Mina, а клиентская часть Android также использует Apache Mina. Эта структура системы IM по-прежнему очень чёткая и разумная, её легко расширять и модифицировать. Ниже приводится демонстрация версии Android, цель которой — просто показать, как она работает. Вы можете обратиться к её коду, использовать эту систему для разработки своих собственных вещей. Основная ценность заключается в высокогибком и относительно стандартизированном решении для обмена мгновенными сообщениями. Мгновенный чат — это всего лишь один из способов его использования!

Конфигурация кластера серверной части:

Модификация сервера:

  1. Для конфигурации кластера серверов сначала необходимо переписать интерфейс SessionManager (см. com.farsunset.ichat.cim.session.ClusterSessionManager.java). При входе пользователя сохраните информацию о счёте и IP-адрес сервера в базе данных, чтобы можно было подсчитать количество подключений, принятых каждым сервером.

  2. Когда клиент подключается к серверу, сервер динамически назначает IP-адрес клиента, выбирая наименее загруженный IP-адрес.

  3. После получения сообщения сервер находит соответствующий Iosession через получателя счёта и IP-адрес входа в систему, а затем передаёт сообщение целевому серверу для обработки и отправки.

Клиентская модификация:

  1. При входе в систему клиент больше не будет использовать фиксированный IP-адрес сервера, а сначала получит текущий свободный IP-адрес через HTTP-интерфейс.

Успешный случай:

HTTP://blog.csdn.net/xx753277/article/details/17512255

HTTP://blog.csdn.net/xx753277/article/details/45535981

Получение сообщений клиентом:

Рисунок: http://staticres.oss-cn-hangzhou.aliyuncs.com/cim-android_client.png

Вход в веб-службу сообщений:

http://192.168.1.11:8080/ichat-server

Рисунок: http://staticres.oss-cn-hangzhou.aliyuncs.com/cim-server.png

Общие функциональные интерфейсы:

Все открытые внешние интерфейсы сосредоточены в com.farsunset.cim.client.android.CIMPushManager:


1.1 Подключение к серверу:
   /**
     * Инициализация, подключение к серверу. В программе запуска или в Application вызовите
     * @param context
     * @param ip
     * @param port
     */
    public static  void connect(Context context,String ip,int port)

Пример:
CIMPushManager.connect(context,"125.12.35.231",28888);



1.2 Привязка учётной записи к серверу
    /**
     * Настройка учётной записи для входа на сервер
     * @param account уникальный идентификатор пользователя
     */
public static  void bindAccount(Context context,String account)

Пример:
CIMPushManager.bindAccount(context,"xiyang");




1.3 Отправка запроса CIM
 Используйте этот функционал по мере необходимости, вы можете заменить его на http-интерфейс

   /**
     * Отправить запрос CIM
     * @param context
     * @param ip
     * @param порт
     */
public static  void sendRequest(Context context,SentBody body)

Пример: получение офлайн-сообщений
    SentBody sent = new SentBody();
    sent.setKey(CIMConstant.RequestKey.CLIENT_OFFLINE_MESSAGE);
    sent.put("account", "xiyang");
    CIMPushManager.sendRequest(context, sent);

Для этого требуется реализация на стороне сервера. Подробности см. в Server PullOflineMessageHandler.java.



1.4 Прекратить приём сообщений

    /**
     * Прекратить приём уведомлений, выйти из текущей учётной записи и закрыть соединение с сервером
     * @param контекст
     */
    public static  void stop(Context context)
 Пример:
 CIMPushManager.stop(контекст);    



1.5 Возобновить приём сообщений

   /**
     * Возобновление приёма уведомлений, повторное подключение к серверу и вход в текущую учётную запись
     * @параметр контекста
     */
    public static  void resume(Context context)
 Пример:
 CIMPushManager.resume(контекст);    



1.6 Полностью уничтожить соединение

   /**
     * Полностью уничтожьте CIM, обычно используется для полного выхода из программы, вызов resume не может быть восстановлен
     * @параметр контекста
     */
    public static  void destroy(Context context)
 Пример:
 CIMPushManager.destroy(контекст);    



1.7 Проверьте, нормально ли соединение с сервером

    /**
     *  
     * @параметр контекста
     */
    public boolean isConnected(Context context)   

 Пример:
 CIMPushManager.isConnected(контекст);   

1.8 Получить состояние PushManager
    //Уничтожить destroy()
    CIMPushManager.STATE_DESTROYED = 0x0000DE;
    //Остановленный stop()
    CIMPushManager.STATE_STOPED = 0x0000EE;
    
    CIMPushManager.STATE_NORMAL = 0x000000;
    
    public int getState(Context context)   

 Пример:
 CIMPushManager.getState(контекст);   

1.9 Получение сообщений и связанных событий

Сначала зарегистрируйте широковещательную рассылку и прослушайте следующие действия. Обратитесь к androidManifest.xml для последующей настройки.

См. реализацию CustomCIMMessageReceiver.
    /**
     * Обработка полученных сообщений с сервера
     * @сообщение
     */
    public abstract void onMessageReceived(Message message);

    /**
     * Когда CIMPushManager.sendRequest() отправляет запрос на сервер и получает ответ, вызывается
     * @replybody
     */
    public abstract void onReplyReceived(ReplyBody replybody);

    /**
     * Вызывается при изменении состояния сети мобильного телефона
     * @networkinfo
     */
    public abstract void onNetworkChanged(NetworkInfo networkinfo);
    
    
    /**
     * Обратный вызов после успешного подключения к серверу
     * @hasAutoBind : true автоматически привязал учётную запись к серверу, не нужно вручную вызывать bindAccount
     */ ```
public abstract void onConnectionClosed();

/**
 * Когда сервер не удалось подключить, происходит обратный вызов
 */
public abstract void onConnectionFailed(Exception e);

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Сервер для мгновенных сообщений на Java, основанный на Apache Mina. Прекрасно сочетается с клиентом на Android и поддерживает мгновенные сообщения с клиентами на других языках (iOS, C, ActionScript, .NET и др.). Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/typ0520-cim.git
git@api.gitlife.ru:oschina-mirror/typ0520-cim.git
oschina-mirror
typ0520-cim
typ0520-cim
master