Параметр функции libwebsockets libwebsocket_client_connect
Это подпись libwebsocket_client_connect()
,
struct libwebsocket * libwebsocket_client_connect (struct libwebsocket_context * context, const char * address, int port, int ssl_connection, const char * path, const char * host, const char * origin, const char * protocol, int ietf_version_or_minus_one)
И по этим параметрам меня смущает то, что host
а также origin
являются.
в описании параметра это говорит
host : Hostname on server
origin : Socket origin name
Кажется, доменное имя или IP-адрес сервера и клиента каждого.
И только когда я ставлю 127.0.0.1 или localhost, он работает нормально (так как я тестировал на localhost и сервер websocket, и клиента)
Но если это так, я думаю, что у функции уже есть поле адреса для IP-адреса сервера или доменного имени, почему у нее, вероятно, есть дублированное поле?
1 ответ
Хост http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
Поле заголовка запроса хоста указывает интернет-хост и номер порта запрашиваемого ресурса, полученного из исходного URI, предоставленного пользователем или ссылающимся ресурсом (обычно HTTP-URL).
Происхождение https://tools.ietf.org/html/rfc6454
При включении в HTTP-запрос поле заголовка источника указывает
источник (и), который "заставил" пользовательский агент выдать запрос, как
определяется API, который вызвал пользовательский агент для выдачи
запрос.
Хост является целью запроса, а источник - доменом, в котором был создан клиент websocket. Например, если у вас есть страница на example1.com, и эта страница открывает веб-сокет для example2.com, то example1.com будет источником, а example2.com - хостом.