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

OSCHINA-MIRROR/harmonyhub-librws

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
README_origin.md 6.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 27.02.2025 18:40 7320174

librws - Универсальная библиотека клиента WebSocket для кросс-платформенного использования

Платформа Версия Лицензия Статус сборки Статус сборки

Возможности

  • Отсутствие дополнительных зависимостей
  • Одиночная заголовочная библиотека с публичными методами librws.h
  • Неблокирующая многопоточность
  • Логика отправки/приёма данных в фоновом потоке

Установка с помощью CocoaPods

Podfile

pod 'librws'

Пример

Создание и хранение объекта WebSocket
  // Определение переменной или поля для хэндлера сокета
  rws_socket _socket = NULL;
  ............
  // Создание объекта сокета
  _socket = rws_socket_create();
Установка URL соединения WebSocket
// Объединённый URL: "ws://echo.websocket.org:80/"
rws_socket_set_scheme(_socket, "ws");
rws_socket_set_host(_socket, "echo.websocket.org");
rws_socket_set_port(_socket, 80);
rws_socket_set_path(_socket, "/");
Установка обратных вызовов ответа WebSocket

Предупреждение: rws_socket_set_on_disconnected обязательно

// Основные функции обратных вызовов
// Вызов активируется при отключении сокета с ошибками или без
static void on_socket_disconnected(rws_socket socket) {
  // Обработка ошибки
  rws_error error = rws_socket_get_error(socket);
  if (error) { 
    printf("\nSocket disconnect with code, error: %i, %s", rws_error_get_code(error), rws_error_get_description(error)); 
  }
  // Забываем о данном объекте сокета, так как последующее отключение будет выполнено автоматически
  _socket = NULL;
}
// Вызов активируется при успешном подключении и завершении рукопожатия
static void on_socket_connected(rws_socket socket) {
  printf("\nSocket connected");
}
// Вызов активируется при получении текстового сообщения
static void on_socket_received_text(rws_socket socket, const char * text, const unsigned int length) {
  printf("\nSocket text: %s", text);
}
..................
// Установка обратных вызовов сокета
rws_socket_set_on_disconnected(_socket, &on_socket_disconnected); // обязательно
rws_socket_set_on_connected(_socket, &on_socket_connected);
rws_socket_set_on_received_text(_socket, &on_socket_received_text);
Подключение
rws_socket_connect(_socket);
Отправка сообщения через WebSocket
const char * example_text =
  "{\"version\":\"1.0\",\"supportedConnectionTypes\":[\"websocket\"],\"minimumVersion\":\"1.0\",\"channel\":\"/meta/handshake\"}";
rws_socket_send_text(_socket, example_text);
Отключение или удаление объекта WebSocket

С момента подключения сокета нам требуется послать сообщение об отключении, а не просто закрыть его лениво. Поэтому следует ждать завершения операции перед удалением объекта. Поэтому используйте rws_socket_disconnect_and_release, это безопасно для работы в нескольких потоках, и забудьте об этом объекте сокета.

rws_socket_disconnect_and_release(_socket);
_socket = NULL;

Лицензия


Лицензия MIT

Авторское право © 2014 - 2019 Oleh Kulykov info@resident.name

Разрешается бесплатно использовать, копировать, модифицировать, объединять, публиковать, распространять, предоставлять по лицензии и продавать копии данного программного обеспечения и связанных с ним документов («Программное обеспечение»), а также разрешается лицам, которым данное программное обеспечение было предоставлено, делать то же самое, при условии соблюдения следующих условий:

Указанное выше авторское право и данная лицензия должны присутствовать во всех копиях или значительных частях Программного обеспечения.

ПРОГРАММНОЕ ОБЕСПОЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЮ ТОРГОВЛЕНИЯ, ДОСТОЙНОСТИ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ И НЕНАРУШЕНИЯ ПРАВ, А ТАКЖЕ ПРЕДУПРЕЖДЕНИЕ ОТ АВТОРОВ И ВЛАДЕЛЬЦОВ АВТОРСКОГО ПРАВА ОТ ВСЕХ КОМПЕНСАЦИЙ, КОТОРЫЕ МОГУТ ВОЗНИКНУТЬ В РЕЗУЛЬТАТЕ ИЗ УПОТРЕБЛЕНИЯ, ИСПОЛЬЗОВАНИЯ ИЛИ ДРУГИХ ДЕЙСТВИЙ С ПРОГРАММНЫМ ОБЕСПОЧЕНИЕМ.

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

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

1
https://gitlife.ru/oschina-mirror/harmonyhub-librws.git
git@gitlife.ru:oschina-mirror/harmonyhub-librws.git
oschina-mirror
harmonyhub-librws
harmonyhub-librws
master