Flask-SocketIO:在节点之间传递事件Redis-Adapter

问题描述

在节点平衡器后面运行的应用程序中使用SocketIO时,官方文档说明了在这些节点之间传递事件的方式(使用SocketIO-Redis):

const io = require('socket.io')(3000);
const redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost',port: 6379 }));

但是,在使用Flask-SocketIO(或不使用Node.js时),SocketIO的JavaScript(独立)版本将像这样使用:

<script src="socket.io.js"></script>
<script>
    var socket = io();
</script>

使用Redis-Adapter-JS独立版本时,如何实现SocketIO?没有Node.js可以使用类似的东西吗?

我尝试使用SocketIO-Redisbrowserify转换为JavaScript,但是socket.adapter()io.adapter()都不起作用。无论如何,文件大小太大。

解决方法

使用SocketIO-JS独立版本时,如何实现Redis-Adapter?

我不知道您为什么在这里使用“独立”。我认为您的意思是JavaScript Socket.IO客户端,无论您使用什么Socket.IO服务器,它都与Redis无关。

Redis支持由服务器实现。对于Node Socket.IO服务器,请使用Redis-Adapter项目。对于Python Socket.IO服务器,内置了对Redis的支持,您只需在创建服务器对象时添加message_queue参数,如the docs所示。