小编Zer*_*lve的帖子

Socket.io 性能优化 15'000 个用户

我有一个带有巨大聊天室的聊天应用程序(15'000 个用户连接到一个房间)。只有少数人有写的权利,所以理论上应该不会有很大的负担。我注意到存在性能问题:当仅发送一条消息时,服务器 CPU 负载飙升至 30%-50%,并且消息传递缓慢(如果写入多条消息,可能会晚 1 秒或更糟)我分析了具有临床火焰的性能。我发现这段代码是问题所在: socket.to("room1").emit(/* ... */);它将send()在engine.io 和 库clearBuffer中触发ws

有人知道我是否做错了什么以及如何优化性能?

火焰图

javascript performance websocket node.js socket.io

6
推荐指数
1
解决办法
2184
查看次数

如何在RXJS Observable中转换属性

我必须在RXJS Observable中转换对象属性。使用“地图”运算符可以工作。当我两次订阅同一个可观察对象时,将发生问题:属性被两次转换

我尝试使用“共享”运算符和多种变体,但似乎无济于事

代码示例:

    const source = of(
      { id: 1, name: 'John' },
    );

    const personObservable = source.pipe(
      map(person => { 
        person.name = person.name + '_test'; return person; 
      }),
    );

    personObservable.subscribe(
      person => console.log('first: ', person)
    );

    personObservable.subscribe(
      person => console.log('second: ', person)
    );

Run Code Online (Sandbox Code Playgroud)

预期结果:

first:  John_test
second:  John_test
Run Code Online (Sandbox Code Playgroud)

实际结果:

first:  John_test
second:  John_test_test
Run Code Online (Sandbox Code Playgroud)

javascript observable rxjs angular

2
推荐指数
1
解决办法
64
查看次数