Entry tags:
И еще про вебсокеты
Единственной более-менее приличной библиотекой вебсокетов, что я нашел, оказалась вот эта. Для сравнения с libwebsockets, советую заглянуть, какую там предлагают накатать простыню кода просто для того, чтобы "завести" пример-эхо. Здесь же это — четыре десятка строк! Вот:
Единственный недостаток — отсутствие поддержки SSL, ну да ладно. Буду делать аутентификацию с использованием CGI, а сессионный ключ по вебсокету надо только один раз — при авторизации — передавать. Авось, студенты не взломают.
Библиотеку опакетил и выложил в своем репозитории: тарбол и ебилд.
С чувством выполненного долга пойду домой: обедать и спать. Надо еще полей ночью нащелкать для экстинкции и калькулятора экспозиции.
#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, а сессионный ключ по вебсокету надо только один раз — при авторизации — передавать. Авось, студенты не взломают.
Библиотеку опакетил и выложил в своем репозитории: тарбол и ебилд.
С чувством выполненного долга пойду домой: обедать и спать. Надо еще полей ночью нащелкать для экстинкции и калькулятора экспозиции.