python socket.io客户端无法接收广播消息

时间:2018-01-17 13:26:50

标签: python node.js sockets socket.io

我正在构建一个Socket.io应用程序。

这是在AWS实例中运行的Node.Js服务器代码:

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);

我有不同的客户端,使用Javascript在网页上运行,在本地计算机上运行一个Python客户端。

这是Python客户端:

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

问题:

Python客户端收到" welcome"仅当套接字启动时,但当其他客户端发送"消息时#34;到服务器,它重新传输" welcome"对于所有客户端,Python客户端都不会收到它。其他客户收到此特定的#34; welcome",因此问题是Python客户端。

我正在使用https://pypi.python.org/pypi/socketIO-client作为Python客户端。和Socket.io npm版本1.7.2由于这个问题  https://github.com/invisibleroads/socketIO-client/issues/159

1 个答案:

答案 0 :(得分:1)

我发现了问题。 这是一行:

socketIO.wait(seconds=1)

SocketIO仅响应1秒,因此忽略1秒后到达的所有内容。

socketIO.wait()

解决问题