Jestem autorem bjsonrpc. Jestem pewien, że można robić z tym, co chcesz.
Niektóre rzeczy mogą być słabo udokumentowane lub mogą być potrzebne przykłady.
Ale w skrócie, Handler może przechowywać wewnętrzne stany (jak uwierzytelniony lub nie, lub może nazwa użytkownika). Z dowolnego programu obsługi można uzyskać dostęp do klasy "Połączenie", która ma samo gniazdo.
Wygląda na to, że chcesz mieć coś na czacie. Zrobiłem coś podobnego w przeszłości. Spróbuję dodać przykład czatu do nowej wersji.
stany wewnętrzne są wyjaśnione tutaj: http://packages.python.org/bjsonrpc/tutorial1/index.html#stateful-server
Powinny one być wykorzystywane do uwierzytelniania (ale nie standardowa metoda uwierzytelniania jest jeszcze dostarczone).
Sposób, w jaki można uzyskać dostęp do klasy połączenia z obsługi, która nie jest jeszcze udokumentowana (przepraszam), ale jest używana czasami w przykładach wewnątrz kodu źródłowego. Na przykład example1-server.py zawiera tę publiczną funkcję:
def gettotal(self):
self._conn.notify.notify("total")
return self.value_total
BaseHandler._conn reprezentuje połączenie dla tego użytkownika. I jest dokładnie taka sama klasa uzyskać po podłączeniu:
conn = bjsonrpc.connect(host=host,port=port,handler_factory=MyHandler)
Tak, można przechowywać połączeń dla zalogowanych użytkowników w zmiennej globalnej, a później zadzwonić jakikolwiek sposób klient chcesz.
Czy można zrobić z serwerem do klienta, jeśli tak, czy istnieje gdzieś przykład? –