У нас есть сервер веб-сокетов, который слушает порт 7000 за NGINX. Сервер Websocket фактически прослушивает незащищенные веб-сокеты:
if __name__ == '__main__':
import sys
from twisted.python import log
from twisted.internet import reactor
log.startLogging(sys.stdout)
factory = WebSocketServerFactory(u"ws://127.0.0.1:7000")
factory.protocol = MyServerProtocol
# factory.setProtocolOptions(maxConnections=2)
# note to self: if using putChild, the child must be bytes...
reactor.listenTCP(7000, factory)
reactor.run()
NGINX перенаправляет входящие wss
подключения к ws
локальный. У нас есть клиенты Python и Javascript, которые успешно подключаются к этой настройке сети и взаимодействуют с сервером Websocket. Однако нам не повезло с клиентом C ++. Это линия связи:
ws->init("wss://echo.websocket.org:7000", nullptr, "your CA root file path");
Мы кормим CA, который использует сервер. Мы используем Cocos2d::network::WebSocket
который использует libwebsockets
(https://libwebsockets.org/lws-api-doc-master/html/index.html). Когда мы используем вышеприведенную строку, сервер жалуется так:
2018-04-27 11:27:44+0000 [-] failing WebSocket opening handshake ('missing port in HTTP Host header 'url-address.com' and server runs on non-standard port 7000 (wss = False)')
Мы попытались связываться с другими параметрами, которые предоставляет libwebsockets (например, отключить проверку CERT), но это не сработало. Большинство попыток не привело ни к какому соединению.
Есть ли правильный способ отладки этого? Ошибки в клиенте говорят не более, чем «сбой соединения».
Следует отметить, что этот клиент успешно подключается к wss://echoserver.org
Задача ещё не решена.
Других решений пока нет …