Websocket server + web (API) server. Какие есть варианты?
Есть необходимость запуска веб сервера (API) и websocket server'а на одном скрипте. Или как-то организовать между ними обмен данными, если это разные скрипты. Задача вкратце: к сокет серверу подключены клиенты и в режиме реального времени должны получать данные. По определенным командам сокет сервер отправляет запрос к апи и полученный ответ рассылает клиентам. В апи сервере есть ендпоинты на события, которые генерируются на стороннем сайте и передаются в апи, который производит действия и шлет все по сокетам клиентам.
Может запутанно, но задача именно такая. Знаю, что можно такое провернуть на nodejs. Там на одном скрипте с общей областью видимости можно поднять эти 2 сервера, но интересует такая возможность на других языках. Например, PHP, Python. Ничего внятного не нашел. Может кто знает как это можно реализовать.
на вопрос «как сделать» отвечает документация и поиск в интернет.
Тут отвечают на вопросы «почему я сделал, как в документации, а оно не работает. Поискал в интернет, вот запросы, в ответах не нашел. Что я делаю не так?»
Покажите, как вы пробовали решить проблему, приведите код попытки (пусть неудачной), опишите, как запускали, что ожидали и что получилось.
За готовыми решениями - на фриланс. В текущем виде это не вопрос, а задание. Нарушен п.5.12 Регламента.
Во-вторых,
spoiler
даже если таки попрошайничать примеры кода, а не самому писать, то и в таком случае не надо спамить в тэги языка. Упомяните, что просите примеры на таких-то языках, этого достаточно. Десяткам тысяч подписчиков тэгов языков ни к чему читать про ваши страдания с вебсокетом.
Для правильного вопроса надо знать половину ответа
Ничто не мешает скриптам API дёргать скрипт WS-сервера через какой-либо интерфейс. Скажем, тот же Workerman кроме WS-сервера может поднимать HTTP(s) или чистый TCP-сервер.
Да. Просто хотелось без гемора с сокет клиентом передавать данные между серверами. А при поднятии сокета он не принимает другие данные, т.к. ждет только сокет соединение.
В python это можно сделать по-разному. Но самый простой это использовать asyncio и библиотеку aiohttp. Это пример клиента WebSocket client, а это сервера WebSocket server. Как вы понимаете оба ворекра можно запустить в одном event loop, так же как и в javascript.