首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scaling SockJS跟踪客户端

Scaling SockJS跟踪客户端
EN

Stack Overflow用户
提问于 2013-11-27 20:21:28
回答 1查看 326关注 0票数 2

我正在扩展我的Nodejs服务器,它运行一个SockJS服务器。这是一个基本的聊天,其中SockJS服务器存储每个连接的客户端。

基本上我是这样存储的:

代码语言:javascript
复制
var clients = [];
var sockets = {};
    // Identify this client
    socket.name = socket.remoteAddress + ":" + socket.remotePort

    // Put this new client in the list
    clients.push(socket);
    sockets[socket.name] = socket;    

这就是我写入套接字的方式:

代码语言:javascript
复制
sockets[socketName].write("{\"type\":\"type\", \"msg\": \"" + escp(obj.msg) + "\", \"name\": \"" + obj.name+ "\", \"location\": \"" + obj.location + "\"}");

我的想法是现在扩大规模,在亚马逊上启动更多的实例。我会让HAProxy在前排装东西。

问题是聊天的两个人必须在同一个实例上,因为connectedClients在我的ec2 instances之间共享。

有什么办法可以做到这一点吗?我需要在数据库中存储connectedClients吗?(这有可能吗)?

基本上我需要在我的实例之间共享socketsclients

EN

回答 1

Stack Overflow用户

发布于 2020-01-23 23:19:04

我认为您可能必须将会话连接存储在redis/mongodb中,并让这些节点服务器对redis执行发布/订阅操作,以便在整个节点上拥有一致的请求/response。因此,当用户向HAProxy发送消息时,无论HAProxy路由到哪个服务器,如果存在现有连接,则向该节点的请求具有签入redis。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20242378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档