gpt4 book ai didi

node.js - Socket.io 和负载均衡器

转载 作者:搜寻专家 更新时间:2023-11-01 00:03:10 25 4
gpt4 key购买 nike

我正在使用 Socket.io 和 Node.js,并且在 Stingray 负载均衡器后面有两个实例。

负载均衡器是使用通用流式传输设置的,在大多数情况下,似乎工作正常。但是,我注意到一些零星的行为。

基本上,一个人可以连接到两个实例,如果一个实例向所有套接字发出信号,另一个实例将看不到或接收不到这些信号。

这听起来准确吗?有谁知道如何确保将任一服务器完成的发射发送到连接到任何服务器的客户端?

谢谢!戴夫

最佳答案

我在开发时遇到了类似的问题Mote.io并决定使用托管解决方案而不是构建负载均衡器。处理此问题非常困难,因为您需要跨服务器同步数据或将客户端负载平衡到同一实例以确保它们获得所有相同的消息。

Socket.io 不会特别有帮助。您需要实现 Redis、其他一些数据同步或负载平衡应用程序。

PubNub 也会处理这个问题。后端负责在抽象级别同步消息、负载平衡等,因此您只需提供一个 channel 名称,PubNub 将确保该 channel 中的所有客户端都能收到消息。

10 行代码的实时聊天应用

enter image description here

Enter Chat and press enter
<div><input id=input placeholder=you-chat-here /></div>

Chat Output
<div id=box></div>

<script src=http://cdn.pubnub.com/pubnub.min.js></script>
<script>(function(){
var box = PUBNUB.$('box'), input = PUBNUB.$('input'), channel = 'chat';
PUBNUB.subscribe({
channel : channel,
callback : function(text) { box.innerHTML = (''+text).replace( /[<>]/g, '' ) + '<br>' + box.innerHTML }
});
PUBNUB.bind( 'keyup', input, function(e) {
(e.keyCode || e.charCode) === 13 && PUBNUB.publish({
channel : channel, message : input.value, x : (input.value='')
})
} )
})()</script>

关于node.js - Socket.io 和负载均衡器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10964636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com