Рабочий пример клиента веб-сокета C или C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Рабочий пример клиента веб-сокета C или C++

Сообщение Anonymous »

Я новичок в C и C++. Я пытаюсь найти небольшой рабочий пример для любой библиотеки веб-сокетов на C или C++, которая может подключаться к серверу веб-сокетов. Итак, я изучил uWebsockets, libwebsockets, websocketpp и boost::beast. Ни у одного из них нет подробной документации. Я нашел несколько примеров на веб-сайте boost::beast по адресу https://www.boost.org/doc/libs/develop/ ... mples.html, однако они тоже не работают. Если я смогу найти один рабочий пример, я смогу поработать над ним и узнать больше.
Я попробовал эту команду, и она подключается к конечной точке Yahoo:
wscat -c "wss://streamer.finance.yahoo.com/" -H 'Происхождение: https://finance.yahoo.com'
и распечатывает случайную строку.
wscat -c "wss://streamer.finance.yahoo.com/" -H 'Origin: https://finance.yahoo.com'
Connected (press CTRL+C to quit)
> {"subscribe":["ES=F","YM=F","NQ=F","RTY=F","CL=F","GC=F","SI=F","EURUSD=X","^TNX","^VIX","GBPUSD=X","JPY=X","BTC-USD","^CMC200","^FTSE","^N225","INTC"]}
< CgdCVEMtVVNEFduJQ0cYoP2/2/VeIgNVU0QqA0NDQzApOAFFlmEuP0iAgL/AwQJVlwxHR139ST1HZYBWqUNqC0JpdGNvaW4gVVNEsAGAgL/AwQLYAQTgAYCAv8DBAugBgIC/wMEC8gEDQlRD+gENQ29pbk1hcmtldENhcIECAAAAADbvcUGJAgAAhAG9ZWtC
< CgdCVEMtVVNEFQTtQkcY4KbH2/VeIgNVU0QqA0NDQzApOAFFUznHPkiAgMzPwQJVlwxHR139ST1HZQBrQUNqC0JpdGNvaW4gVVNEsAGAgMzPwQLYAQTgAYCAzM/BAugBgIDMz8EC8gEDQlRD+gENQ29pbk1hcmtldENhcIECAAAAADbvcUGJAgAAND7DT2tC

Я попробовал простой код Python, подобный этому
from websocket import create_connection
import json
import pprint
import re
import time
import datetime

def subscribe_yahoo ():
headers = {
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0',
'Accept': '*/*',
'Accept-Language': 'en-US,en;q=0.5',
'Sec-WebSocket-Version': '13',
'Origin': 'https://finance.yahoo.com',
'Sec-WebSocket-Key': 'nNtGm/0ZJcrR+goawlJz9w==',
'DNT': '1',
'Connection': 'keep-alive, Upgrade',
'Sec-Fetch-Dest': 'websocket',
'Sec-Fetch-Mode': 'websocket' ,
'Sec-Fetch-Site': 'same-site' ,
'Pragma': 'no-cache',
'Cache-Control': 'no-cache',
'Upgrade': 'websocket',
}

messages='{"subscribe":["INTC"]}'

# Initialize the headers needed for the websocket connection
initMessages = [
messages,

]

websocketUri = """wss://streamer.finance.yahoo.com/"""
print (websocketUri)

ws = create_connection(websocketUri,header=headers)
for m in initMessages:
print ("sending ", m)
ws.send(m)

message_stream = True
i=0
while message_stream:
result = ws.recv()
i=i+1
print (str(i),' -- ', result)

subscribe_yahoo()

и это тоже работает.
Я был бы очень признателен, если бы кто-нибудь помог мне с кодом, который работает аналогично на C или C++.
Может ли кто-нибудь объяснить, можно ли использовать исходный код Firefox https://searchfox.org/mozilla-central/s ... /websocket для реализации клиента веб-сокета на C++ или нет, или если кто-то использовал успешно выполнил код Firefox для клиента WebSocket.
Я не просил какую-либо рекомендуемую библиотеку, для моих целей обучения подойдет любая библиотека.
Заранее спасибо :)
Следующий пример скопирован как есть из https://www.boost.org/doc/libs/develop/ ... nc_ssl.cpp
#include "example/common/root_certificates.hpp"

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

namespace beast = boost::beast; // from
namespace http = beast::http; // from
namespace websocket = beast::websocket; // from
namespace net = boost::asio; // from
namespace ssl = boost::asio::ssl; // from
using tcp = boost::asio::ip::tcp; // from

// Sends a WebSocket message and prints the response
int main(int argc, char** argv)
{
try
{
// Check command line arguments.
if(argc != 4)
{
std::cerr

Подробнее здесь: https://stackoverflow.com/questions/690 ... ng-example
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»