Поиск

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


Единственной более-менее приличной библиотекой вебсокетов, что я нашел, оказалась вот эта. Для сравнения с 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, а сессионный ключ по вебсокету надо только один раз — при авторизации — передавать. Авось, студенты не взломают.

Библиотеку опакетил и выложил в своем репозитории: тарбол и ебилд.
С чувством выполненного долга пойду домой: обедать и спать. Надо еще полей ночью нащелкать для экстинкции и калькулятора экспозиции. eddy_em.livejournal.com

Добавить комментарий