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)
| File | Size | Uploaded | |
|---|---|---|---|
| socketclusterclient-1.3.6.tar.gz | 6.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|