FabioDev
FabioDev

Reputation: 754

python socket.io client can't receive broadcasting messages

I building a Socket.io App.

This is the Node.Js Server Code, running in AWS instance:

var server = require('http').createServer();
var io = require('socket.io')(server);

io.on('connection', function(client){

    io.sockets.emit("welcome"); //This is received by everyone

    client.on('message', function(msg){

        console.log("message arrived"); //This is executed
        io.sockets.emit("welcome"); //This is not received by Python Client

    });
});
server.listen(8090);

I have different clients, running on web page with Javascript and one Python client running in my local computer.

This is the Python client:

from socketIO_client import SocketIO

socket_url = "http://xxxxxxxxxxxxxx.eu-central- 1.compute.amazonaws.com"

socketIO = SocketIO(socket_url, 8090, verify=False)

def welcome():
    print('welcome received')

socketIO.on('welcome', welcome)
socketIO.wait(seconds=1)

while True:
    pass

The problem:

Python client receives the "welcome" only when the socket start, but when other clients send the "message" to the server, and it re-transmit the "welcome" to all clients, the Python client does not receive it. The others clients receive this specific "welcome", so the problem is the Python client.

I am using https://pypi.python.org/pypi/socketIO-client for the Python client. And Socket.io npm version 1.7.2 due to this issue https://github.com/invisibleroads/socketIO-client/issues/159

Upvotes: 1

Views: 2370

Answers (1)

FabioDev
FabioDev

Reputation: 754

I found the problem. It was the line:

socketIO.wait(seconds=1)

SocketIO was responding only for 1 second, so everything that arrive after 1 second is ignored.

socketIO.wait()

Solve the problem

Upvotes: 1

Related Questions