Home > OS >  Getting 200 code when using sockets in Flask
Getting 200 code when using sockets in Flask

Time:04-20

I have Flask server, which handles HTTP requests but also WebSocket using flask-socketio. Code of server here:

from flask_socketio import SocketIO, emit
from flask import Flask

app = Flask(__name__)
socketio = SocketIO(app)

@socketio.on('response')
def message(data):  
    time.sleep(1)
    emit('sensor', {"data": "hello"})
    
@socketio.on('connect')
def connect():
    emit('after connect')

if __name__ == '__main__':
    socketio.run(app)

and script tag in html looks like this:

<script>
    var socket = io("ws://192.168.100.3:5000");
            
    socket.on('after connect', function(msg) {
        console.log('connected')
        socket.emit('response', msg)
    });
            
    socket.on('sensor', function(msg) {
        console.log(msg.data)
        socket.emit('response', msg)
    });     
</script>

Everything works, I got the communication, but one thing that concerning me is that in terminal where server run I get code 200 for GET and POST requests.

192.168.100.10 - - [17/Apr/2022 11:36:27] "GET /socket.io/?EIO=2&transport=polling&t=1650191787548-1094&sid=faed6806df0a437d8d17bd8a294f8754 HTTP/1.1" 200 -
192.168.100.10 - - [17/Apr/2022 11:36:27] "POST /socket.io/?EIO=2&transport=polling&t=1650191788570-1095&sid=faed6806df0a437d8d17bd8a294f8754 HTTP/1.1" 200 -

I get response in console I think communication is right. But with those request that I am "making" every second resources usage in web browser is getting bigger. Small amount but still. As far as I know WebSockets should not send HTTP requests to server, but it has to be TCP/IP constant connection.

What am I doing wrong, or it is my WebSockets understanding wrong?

CodePudding user response:

The GET and POST requests are there because you are using Socket.IO. As stated in its documentation, Socket.IO starts with HTTP long-polling before it attempts to establish a WebSocket connection. It will also fallback to HTTP long-polling if it cannot use WebSocket.

  • Related