WinHttpSendRequest имеет параметр dwContext, так что я могу читать контекст из функции WINHTTP_STATUS_CALLBACK.Этот контекст позволяет определить, какой WinHttpSendRequest предназначен для текущего обратного вызова.
К сожалению и странно, однако, WinHttpWebSocketSend НЕ имеет такого параметра контекста вообще.В результате невозможно различить несколько вызовов WinHttpWebSocketSend в функции WINHTTP_STATUS_CALLBACK.
Может кто-нибудь помочь мне с этим, пожалуйста?
Для справки, я пытаюсь изменить следующий примердля работы с веб-сокетом.
https://msdn.microsoft.com/en-us/library/aa383138%28VS.85%29.aspx#additional
Ресурс веб-сокета, который я пытаюсь получить: https://api.upbit.com/websocket/v1. После подключения вы можете отправить следующую строку ресурса для тестирования:
[{"ticket": "test"}, {"format": "SIMPLE"}, {"type": "trade", "codes": ["KRW-BTC","BTC-BCH"]}, {"format": "SIMPLE"}]
Если все пойдет хорошо, вы получите:
{"mk":"KRW-BTC", "ТМС": 1523531768829, "ТД": "2018-04-12", "ТТМ": "11:16:03", "ttms": 1523531763000, "ф": 7691000,0, "тв": 0.00996719," ab ":" BID "," pcp ": 7429000.00000000," c ":" RISE "," cp ": 262000.00000000," sid ": 1523531768829000," st ":" SNAPSHOT "} {" mk ": "BTC-МПБ", "ТМС": 1523531745481, "тд": "2018-04-12", "ТТТ": "11:15:48", "ttms": 1523531748370, "TP": 0.09601999,»тВ ": 0.18711789,"ab": "BID", "pcp": 0.09618000, "c": "FALL", "cp": 0.00016001, "sid": 15235317454810000, "st": "SNAPSHOT"} {"mk": "KRW-BTC», "ТМС": 1523531769250, "тд": "2018-04-12", "ТТТ": "11:16:04", "ttms": 1523531764000, "TP": 7691000.0, "TV": 0,07580113, "ab": "BID", "pcp": 7429000.00000000, "c": "RISE", "cp": 262000.00000000, "sid": 1523531769250000, "st": "REALTIME"}
У меня есть исходный файл проекта, который вы можете скачать: https://1drv.ms/u/s!AiVorOunaPYdhAuHrggDk2EYa2X7
Как только вы загрузите, скомпилируйте и запустите его.Затем вы увидите диалоговое окно с кнопкой «Скачать», в котором будет отображаться - http://www.microsoft.com - флажок WebSocket отключен
При нажатии кнопки «Загрузка» отобразится асинхронный WinHttpSendRequest, работающий с обычным сайтом, таким как http://www.microsoft.com.
Я хотел изменить эту демонстрационную программу для сервера веб-сокетов (https://api.upbit.com/websocket/v1). Для этого я # # define'd WSS_API_UPBIT Далее, раскомментируйте строку 19 AsynchDemo.cpp до
define WSS_API_UPBIT
Затем снова запустите демонстрацию. На этот раз вы увидите немного другой диалог с - https://api.upbit.com/websocket/v1 - флажок WebSocket включен
Теперь установите флажок Websocket и нажмитеЗагрузка. Она не будет работать из-за отсутствия контекста в обратных вызовах.
thx