WebSocket@Python
When building a real-time application, there’s a moment where you have to choose how to implement the real-time data exchange between client and server. WebSockets is probably the most popular solutions for implementing real-time communications in the modern web.
WebSockets
When talking about WebSockets, we refer to a web communication protocol that provides a full-duplex communication channel over a single TCP connection. In few words, what it does is, it allows interactions between client and server with minimum overhead, allowing us to build applications that use the advantages of real-time communications.
For the time being, imagine if you’re building a chat app: you need to receive and send data as soon as possible, right? Well, that’s the right job for WebSockets! You can open one TCP connection and share data leaving it open as long as you need it.
WebSockets first appeared in 2010 in Google Chrome 4, and the first RFC (RFC 6455) has been published one year later, in 2011.
Great use cases for WebSockets includes:
- Chat Applications
- Multiplayer Games
- Collaborative Editing
- Social Feeds
- Location-based Applications
and many more.
Now, here in this blog I will be showing lite chat app ,ie in python where server will be running on RED_HAT_LINUX_8 and in this server side have the concept of WebSocket and Multi-threading to achieve lite chat application
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) OR s=socket.socket()
ip=””
port=1234
s.bind((ip,port))
the above line of code,talks about the type of socket family used here (IPv4) ,and how is the data going to be transferred via TCP or UDP here TCP is used as to provides a full-duplex communication channel over a single TCP connection. now bind part binds the IPv4 and port number that forms the socket, socket is the complete IPv4 along with PORT number for that particular process like 192.168.254.17:1234 is in above case)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1
s.listen()
this piece of code will hold the established connection in listening state, as one could see in the above screen shot
while true:
c,addr=s.accept()
t1=threading.Thread(target=iiec , args=(c,addr))
t1.start()def iiec(c,addr):
print(addr)
c.send(b”i am from server@sonu”)
data=c.recv(1024)
print(data)
this block of code will ,accept the incoming request from client side,and here the concept of multithreading is used to establish the more that one connection can be established at a single point of time {t1=threading.Thread(target=iiec , args=(c,addr))}
now here we come to the function called iiec which uses the argument as c and addr as c is for connection and address is for the address of the client respectively and then data is exchanged b/w the server and client side
The plain WebSockets, which need to run just two requests/traffic by the help of browser or Linux operating system(RedHat Linux8 used):
- The
GET
request for the client side - The
UPGRADE
connection to WebSocket
The Above code are the glimps, every modern browser supports WebSockets these days.
For instance, if you’re writing a chat application and you want to notify all the connected clients that a new user has joined the chat, you can easily broadcast that message in one shot to everyone. Using plain WebSocket, you’ll need a list of all the connected clients and then send the message directly one by one.
for source code visit:- https://github.com/sonukushwaha403/python_socket-TCP.git