Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Category:

И еще про вебсокеты

Единственной более-менее приличной библиотекой вебсокетов, что я нашел, оказалась вот эта. Для сравнения с libwebsockets, советую заглянуть, какую там предлагают накатать простыню кода просто для того, чтобы "завести" пример-эхо. Здесь же это — четыре десятка строк! Вот:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <unistd.h>
#include <ws.h>

void onopen(int fd)
{
        char *cli;
        cli = ws_getaddress(fd);
        printf("Connection opened, client: %d | addr: %s\n", fd, cli);
        free(cli);
}

void onclose(int fd)
{
        char *cli;
        cli = ws_getaddress(fd);
        printf("Connection closed, client: %d | addr: %s\n", fd, cli);
        free(cli);
}

void onmessage(int fd, const unsigned char *msg)
{
        char *cli;
        cli = ws_getaddress(fd);
        printf("I receive a message: %s, from: %s/%d\n", msg, cli, fd);
        ws_sendframe(fd, (char *)msg, true);
        free(cli);
}

int main()
{
        struct ws_events evs;
        evs.onopen    = &onopen;
        evs.onclose   = &onclose;
        evs.onmessage = &onmessage;
        ws_socket(&evs, 8080);

        return 0;
}

Единственный недостаток — отсутствие поддержки SSL, ну да ладно. Буду делать аутентификацию с использованием CGI, а сессионный ключ по вебсокету надо только один раз — при авторизации — передавать. Авось, студенты не взломают.

Библиотеку опакетил и выложил в своем репозитории: тарбол и ебилд.
С чувством выполненного долга пойду домой: обедать и спать. Надо еще полей ночью нащелкать для экстинкции и калькулятора экспозиции.
Tags: c, gentoo, websockets
Subscribe

  • А что, в С так нельзя?

    Пытаюсь передать в функцию цвет как массив. Функция такая: void Pattern_draw3(Img3 *img, Pattern *p, int xul, int yul, uint8_t colr[3]); И…

  • Ардуиноподход

    Вот как ни гляну, большинство народу для считывания данных калибровки в BMP/BME280 использует типичный ардуиноподход, как, например, здесь: зачем-то…

  • Темы-2

    Некоторые испугались, прочитав предыдущие темы. Повторяю: темы для работы в течение всей школы (три года). А вот — их части, которые можно осилить за…

promo eddy_em august 17, 2019 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 0 comments