использование одного WSocketNotifier для всех приложений WApplications в WT - PullRequest
1 голос
/ 21 июня 2011

Я пытаюсь создать приложение с WT, которое на одном конце должно взаимодействовать с другим программным обеспечением через сокет, а на другом конце уведомлять о каждом открытом сеансе (WApplications).

Дело в том, что я могу заставить его работать, используя WSocketNotifier, чтобы получать уведомления о новых событиях в socked, НО WSocketNotifier связан с конкретным сеансом. В своем конструкторе это делает:

sessionId_(WApplication::instance()->sessionId()),

И это проблема, потому что у меня только один сокет, а не один для каждого сеанса. Поэтому я считаю, что WSocketNotifier должен быть присоединен к некоторому более общему объекту, не связанному с конкретным сеансом. Есть ли способ сделать это?

Единственное решение, которое я вижу на данный момент, но оно не очень элегантно, - это иметь статический WSocketNotifier и заменять его, когда сеансы умирают ...

Ответы [ 2 ]

0 голосов
/ 14 июля 2011

в вашем main () создайте поток, который обрабатывает данные из вашего сокета. С помощью select, блокирования чтения, ... Затем используйте WServer :: post (), чтобы уведомить ваши сеансы о том, что данные поступили в ваш сокет.

0 голосов
/ 21 июня 2011

Я ничего не знаю о WT, но можете ли вы создать «фиктивный» сеанс только для обработки уведомлений о сокетах и ​​пересылки в реальные сеансы из тех? Или прокрутите свой собственный уведомитель, на который могут подписаться сеансы?

...