问题描述
在节点平衡器后面运行的应用程序中使用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-Redis
将browserify
转换为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所示。