Создайте новый процесс клиентского приложения для новых входящих подключений от QWebSocketServer. Можем ли мы создать несколько qapplication в нескольких процессах?
Я создал приложение на основе opengl, имеющее HTML-интерфейс и логику C++, подключенное через QWebChannel.
Для настольных версий (windows/linux) я создал QWebEngineView для отображения пользовательского интерфейса HTML. Мне удалось успешно создавать, запускать и обмениваться данными между html и C++ приложением.
Теперь я хочу создать приложение на основе браузера, используя тот же пользовательский интерфейс HTML и логику C++. Я могу добиться этого с помощью классов QWebSockerServer, qTcpSocket, QWebChannelAbstractTransport.
Я хочу создавать Qt мое приложение в новом процессе всякий раз, когда подключается клиент. Новые сокеты TCP создаются для каждого соединения. Также мне нужно создать QWebChannel для каждого процесса, который мне нужен в моем приложении.
JsToCppProxy webRelayMsgObj;
QWebChannel webChannel;
webChannel.registerObject("JsToCppProxy", &webRelayMsgObj);**
WebSocketTransport* pSocketTransport = new WebSocketTransport(m_server->nextPendingConnection());
QObject::connect(this, (void(WebSocketServer::*)(QWebChannelAbstractTransport*))&WebSocketServer::clientConnected,
&m_WebChannel, &QWebChannel::connectTo);
emit clientConnected(pSocketTransport);
WebSocketTransport является производным от QWebChannelAbstractTransport. Я взял его из одного из примеров qt.
Вопрос:
- Я новичок в программировании сокетов. Выше фрагмент кода я должен сделать в новом процессе Qt. Но экземпляр m_server находится в другом процессе Qt. Могу ли я создать WebSocketTransport в одном процессе и получить доступ к нему в другом процессе Qt?
- QServer находится в одном процессе (у которого есть qapplication), и мое приложение также имеет qapplication. Можно ли создавать разные qapplications в разных процессах?