Так что я использую здесь учебник для настройки моего соединения socket.io с помощью Angular 5.x
https://blog.codewithdan.com/2017/11/07/pushing-real-time-data-to-an-angular-service-using-web-sockets/
Есть два сценария, и я не уверен, почему один работает, а другой нет, поэтому я надеюсь, что кто-то может помочь.
Сценарий сбоя
1) Запустите мой WS-сервер с помощью библиотеки Boost :: Beast CPP на IP-адресе сервера 10.1.1.1, используя плагин chrome «Простой клиент WebSocket». Я подключаюсь к IP-адресу моего сервера, он подключается через HTTP-обработчик Beast, см. это как запрос на обновление Websocket, порождает мой сеанс websocket, работает и подключается, как и ожидалось. Я изменяю свой HTTP-запрос, чтобы установить ALLOW-ACCESS-CONTROL-ORIGIN и другие флаги для решения проблем CORS, блокирующих мой Angular-клиент, в настоящее время я просто заставил его разрешить http://localhost:4200,, хотя я планировал изменить его на эхо обратно IP клиента, не уверен, если это является частью проблемы, которую я честно имею.
В случае, если это имеет значение, вот пункты запроса, которые я добавляю
res.insert(boost::beast::http::field::access_control_allow_origin, "http://localhost:4200");
res.insert(boost::beast::http::field::access_control_allow_methods, "GET, POST, OPTIONS, PUT, PATCH, DELETE");
res.insert(boost::beast::http::field::access_control_allow_headers, "X-Requested-With,content-type");
res.insert(boost::beast::http::field::access_control_allow_headers, "X-Requested-With,content-type");
Вот ответ / запрос / общее на случай сбоя
https://imgur.com/a/ZqyC1iz
Рабочий сценарий
1) Запустите мой WS-сервер с помощью библиотеки Boost :: Beast CPP на сервере. Использование Socket.Io для Angular5. Это в основном пустой проект angular-cli и в компоненте приложения я делаю
this.socket = socketIo('10.1.1.1:8087').
Хотя я также попробовал следующее после рассмотрения некоторых других проблем, с которыми люди пытались заставить SocketIO просто перейти прямо в режим websocket и не выполнять другие http-транзакции.
this.socket = socketIo({transports: ['websocket'], upgrade: false}, '10.1.1.1:8087');
Результаты не совпадают с рабочим случаем, запрос, кажется, тот же, но он никогда не вызывает мой код запроса на обновление websocket в Beast, и, насколько я могу судить, соединение никогда не устанавливается.
Вот запрос / ответ / общее на случай сбоя
https://imgur.com/a/qiTfFAo
Опять же я чувствую, что это как-то связано с тем, что плагин Chrome подключается напрямую к IP-адресу сервера, где при подключении через мой угловой проект отправляет Localhost: 4200 в качестве источника, а не фактический IP-адрес клиентских машин?
Любая помощь будет принята с благодарностью.