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

Posted

技术标签:

【中文标题】python socket.io客户端无法接收广播消息【英文标题】:python socket.io client can't receive broadcasting messages 【发布时间】:2018-06-26 09:41:47 【问题描述】:

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

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

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 客户端仅在套接字启动时收到“欢迎”,但当其他客户端向服务器发送“消息”,并将“欢迎”重新发送给所有客户端时,Python 客户端收不到。其他客户端收到这个特定的“欢迎”,所以问题出在 Python 客户端。

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

【问题讨论】:

【参考方案1】:

我发现了问题。 是这样的:

socketIO.wait(seconds=1)

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

socketIO.wait()

解决问题

【讨论】:

以上是关于python socket.io客户端无法接收广播消息的主要内容,如果未能解决你的问题,请参考以下文章

socket.io:为啥这个广播语句不起作用?

python Socket.IO 客户端,用于向 TornadIO2 服务器发送广播消息

socket.io:客户端将所有传入消息接收到单个函数中

节点(套接字)实时音频流/广播

Socket IO 节点向所有客户端广播数据

在 node.js 中使用 socket.io 通过 webrtc 广播实时音频