Я создал QTcpServer
на порту 1024. Я хочу подключиться к нему из веб-сокета, используя URL-адрес ws://localhost:1024
, но он не подключается. Разве мы не можем подключить веб-сокеты к обычным сокетам TCP-сервера?
Предоставление сервера WebSockets в приложении Qt
Ответы (3)
Веб-сокеты не являются чистыми сокетами TCP. Под капотом они используют собственный протокол, построенный поверх HTTP. Итак, наслоение выглядит так: IP > TCP > HTTP > WebSocket
.
Поэтому, чтобы предоставить сервер веб-сокетов в Qt, вам нужна реализация протокола веб-сокетов. Ознакомьтесь с QtWebsocket для этой реализации.
Немного неуместная информация. Они НЕ «построены» на HTTP, WebSocket намного ближе к уровню TCP. Однако они требуют рукопожатия сервера обновления через HTTP-запрос.
ссылка на RFC — http://tools.ietf.org/html/rfc6455#section- 1.7а>
Как указал Игорь, WebSocket начинается с HTTP-запроса, который затем обновляется до WebSocket. Вы можете взглянуть на QtWebSockets. Он является частью игровой площадки Qt и может использоваться как для клиентских, так и для серверных реализаций.