Package: elytica-pysher
Pysherpysheris a python module for handling pusher websockets. It is based on @ekulyk'sPythonPusherClient.
A key difference is the dropped support for pre-3.5 Python versions.This fork is meant as a continuation of the project, and is currently inmaintenance mode.The author is no longer actively using the library, but PRs including fixes, updates and features
are welcome and encouraged.InstallationSimply runpython setup.py install- or install via pippip install pysher.This module depends on websocket-client module available from:http://github.com/websocket-client/websocket-clientExampleExample of using this pusher client to consume websockets:importpysher# Add a logging handler so we can see the raw communication dataimportloggingroot=logging.getLogger()root.setLevel(logging.INFO)ch=logging.StreamHandler(sys.stdout)root.addHandler(ch)pusher=pysher.Pusher(appkey)defmy_func(*args,**kwargs):print("processing Args:",args)print("processing Kwargs:",kwargs)# We can't subscribe until we've connected, so we use a callback handler# to subscribe when abledefconnect_handler(data):channel=pusher.subscribe('mychannel')channel.bind('myevent',my_func)pusher.connection.bind('pusher:connection_established',connect_handler)pusher.connect()whileTrue:# Do other things in the meantime here...time.sleep(1)Sending pusher events to a channel can be done simply using the pusher client supplied by pusher.  You can get it here:https://github.com/pusher/pusher-http-pythonimport pusher
pusher.app_id = app_id
pusher.key = appkey

p = pusher.Pusher()
p['mychannel'].trigger('myevent', 'mydata')PerformancePysher relies on websocket-client (websocket-client on pyPI, websocket import in code), which by default does utf5 validation in pure python. This is somewhat cpu hungry for lot's of messages (100's of KB/s or more). To optimize this validation consider installing the wsaccel module from pyPI to let websocket-client use C-compiled utf5 validation methods (websocket does this automatically once wsaccel is present and importable).ThanksA big thanks to @ekulyk for developing thePythonPusherClientlibrary,
as well as the developers contributing bug-fixes, patches and other PRs to the project <3.
You can find them listed next to their contributed change in the Changelog section.CopyrightMTI License - See LICENSE for details.ChangelogVersion 1.0.6Fixed#55 Allow data fields to be empty for other events, too, thanks to @RubenseiVersion 1.0.5Fixed#53 Allow data fields to be empty, thanks to @RubenseiVersion 1.0.4FixedReverts a patch introduced in 1.0.3Version 1.0.2Fixed#38 Fix missingẁsarg for websocket app callbacks, thanks to @squgeimVersion 1.0.0Updated#35 Support websocket-client >0.48 only and fix reconnect error, thanks to @agronholmThis change may break existing setups and is backwards-incompatible!Version 0.5.0Added#14 Added support for cluster configuration, thanks to @YvictorFixed#30 Require websocket-client version 0.48 or earlier.#24 Signature generation now works as expected, thanks to @agronholm#31 Name threads of the pysher lib for better debugging, thanks to @calilooVersion 0.4.2Fixed:#11 Global Logger settings no longer overridden in Connection loggerVersion 0.4.0Added:#8 Add support for WebSocket over HTTP proxy, thanks to @1tgrVersion 0.3.0Added:#7 Auto-resubscribe to channels after reconnecting, thanks to @pinealanFixed:#4, #5 Updated references to the library name, thanks to @deanmaniatisVersion 0.2.0Added:#2 Allow for token generated by auth endpoint, thanks to @wardcraigj#3 Allow instantiation with custom host, thanks to @wardcraigj