Skip to main content

socketcluster-client-python

Refer examples for more details :

Overview

This client provides following functionality

  • Easy to setup and use
  • Can be used for extensive unit-testing of all server side functions
  • Support for emitting and listening to remote events
  • Automatic reconnection
  • Pub/sub
  • Authentication (JWT)
  • Support for python2.x.x / python3.x.x

To install use

    sudo pip install socketclusterclient

Description

Create instance of Socket class by passing url of socketcluster-server end-point

    //Create a socket instance
    socket = Socketcluster.socket("ws://localhost:8000/socketcluster/") 

Important Note : Default url to socketcluster end-point is always ws://somedomainname.com/socketcluster/.

Registering basic listeners

Different functions are given as an argument to register listeners

        from socketclusterclient import Socketcluster
        import logging

        logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)


        def onconnect(socket):
            logging.info("on connect got called")


        def ondisconnect(socket):
            logging.info("on disconnect got called")


        def onConnectError(socket, error):
            logging.info("On connect error got called")


        def onSetAuthentication(socket, token):
            logging.info("Token received " + token)
            socket.setAuthtoken(token)


        def onAuthentication(socket, isauthenticated):
            logging.info("Authenticated is " + str(isauthenticated))


        if __name__ == "__main__":
            socket = Socketcluster.socket("ws://localhost:8000/socketcluster/")
            socket.setBasicListener(onconnect, ondisconnect, onConnectError)
            socket.setAuthenticationListener(onSetAuthentication, onAuthentication)
            socket.connect()

Connecting to server

  • For connecting to server:
    //This will send websocket handshake request to socketcluster-server
    socket.connect();
  • By default reconnection to server is disabled (since latest release) , to enable it and configure delay for connection
    //This will set automatic-reconnection to server with delay of 2 seconds and repeating it for infinitely
   socket.setdelay(2)
   socket.setreconnection(True)
   socket.connect();
  • By default logging of messages in disabled (since latest release), to enable it
   socket.enablelogger(True)

Emitting and listening to events

Event emitter

  • eventname is name of event and message can be String, boolean, int or JSON-object
    socket.emit(eventname,message);

    # socket.emit("chat", "Hi")
  • To send event with acknowledgement
    socket.emitack("chat", "Hi", ack)  

    def ack(eventname, error, object):
        print "Got ack data " + object + " and error " + error + " and eventname is " + eventname

Event Listener

  • For listening to events :

The object received can be String, Boolean, Long or JSONObject.

     # Receiver code without sending acknowledgement back
     socket.on("ping", message)

     def message(eventname, object):
         print "Got data " + object + " from eventname " + eventname
  • To send acknowledgement back to server
    # Receiver code with ack
    socket.onack("ping", messsageack)

    def messsageack(eventname, object, ackmessage):
        print "Got data " + object + " from eventname " + eventname
        ackmessage("this is error", "this is data")

Implementing Pub-Sub via channels

Creating channel

  • For creating and subscribing to channels:
    # without acknowledgement
    socket.subscribe('yell')

    #with acknowledgement
    socket.subscribeack('yell', suback)

    def suback(channel, error, object):
        if error is '':
            print "Subscribed successfully to channel " + channel
  • For getting list of created channels :
        channels = socket.getsubscribedchannels()

Publishing event on channel

  • For publishing event :
       # without acknowledgement
       socket.publish('yell', 'Hi dudies')

       #with acknowledgement
       socket.publishack('yell', 'Hi dudies', puback)

       def puback(channel, error, object):
           if error is '':
               print "Publish sent successfully to channel " + channel

Listening to channel

  • For listening to channel event :
        socket.onchannel('yell', channelmessage)

        def channelmessage(key, object):
            print "Got data " + object + " from key " + key

Un-subscribing to channel

         # without acknowledgement
         socket.unsubscribe('yell')

         # with acknowledgement
         socket.unsubscribeack('yell', unsuback) 

         def unsuback(channel, error, object):
              if error is '':
                   print "Unsubscribed to channel " + channel 

Disable SSL Certificate Verification

        socket = Socketcluster.socket("wss://localhost:8000/socketcluster/")
        socket.connect(sslopt={"cert_reqs": ssl.CERT_NONE})

HTTP proxy

Support websocket access via http proxy. The proxy server must allow "CONNECT" method to websocket port. Default squid setting is "ALLOWED TO CONNECT ONLY HTTPS PORT".

        socket = Socketcluster.socket("wss://localhost:8000/socketcluster/")
        socket.connect(http_proxy_host="proxy_host_name", http_proxy_port=3128)
  • To have custom settings over internal logger, you can get logger instance and apply necessary settings over it.
        sclogger = socket.getlogger()

Please follow logging tutorial over here : https://docs.python.org/3/howto/logging-cookbook.html

Release files for socketclusterclient 1.3.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for socketclusterclient 1.3.6
File Size Uploaded
socketclusterclient-1.3.6.tar.gz 6.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for socketclusterclient 1.3.6
File Interpreter ABI Platform
socketclusterclient-1.3.6-py3-none-any.whl Python 3 none any Details

Total release size: 13.3 kB

Release files / socketclusterclient-1.3.6.tar.gz

Download URL socketclusterclient-1.3.6.tar.gz
Size 6.2 kB
Tags Source
SHA-256 checksum
How to use checksums
8f09b48bdc5e5f7e3aa074e25dba5ebb98377f466851c944aec8fd57f329ea40
BLAKE2b-256 checksum
How to use checksums
3dc004758c00c591ecb2c97fc485975d652a33714be4da2305a212b26ca58d2b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.5.0.1 requests/2.9.1 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.5.2

Release files / socketclusterclient-1.3.6-py3-none-any.whl

Download URL socketclusterclient-1.3.6-py3-none-any.whl
Size 7.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0c20e53d07532dc9e5b6ddd9d92e1f6c94ba9b032d14d96590f8ed342a9a389d
BLAKE2b-256 checksum
How to use checksums
6b201b7cad6e6db394d68c22a1c3c680030241f6b0bc3aa35f7089a83e7a9631
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.5.0.1 requests/2.9.1 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.5.2

Release history Release notifications | RSS feed

This release

1.3.6 This release

2 release files

1.3.4

1 release file

1.3.3

1 release file

1.3.2

1 release file

1.3.1

1 release file

1.3.0

1 release file

1.2.2

1 release file

1.2.1

1 release file

1.2

1 release file

1.1

1 release file

1.0

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page