【问题标题】:Does socket.io emit a lot of processing power?socket.io 会发出很多处理能力吗?
【发布时间】:2016-06-07 21:44:52
【问题描述】:

我有一个 socket.io 客户端,如果特定用户登录/注销到我的 socket.io 服务器,它需要监听 我所做的是创建一个函数,该函数接受一个用户 ID 数组,以及一个回调,如果他登录/退出,则返回用户信息。这是代码:

        this.onUserConnected = function(arrayOfUserID,cb){

            if(typeof arrayOfUserID != 'object'){
                return console.error('1st parameter is not an array');
            }
            socket.on('onUserConnected', function(user) {
              if(arrayOfUserID.indexOf(user.user_id) > -1){
                    cb(user)
                }
            })
        }

        this.onUserDisconnected = function(arrayOfUserID,cb){
            if(typeof arrayOfUserID != 'object'){
                return console.error('onUserDisconnected 1st parameter is not an array');
            }
            socket.on('onUserDisconnected', function(user) {
                if(arrayOfUserID.indexOf(user.user_id) > -1){
                    cb(user)
                }
            })
        }

这里是socket.io服务器代码:

 //Some authentication here which check and get the user if he exists
 socket.emit('onUserConnected', user)

将用户发送到所有连接的套接字是否很好?在客户端,我获取所有登录/注销的用户并检查 user_id 是否等于 arrayOfUserID 中的值之一然后返回它是否很好?

注意:我知道 Socket.io Rooms,但在我的应用程序中我处理多个选项卡,并且我有一个动态命名空间

【问题讨论】:

  • 您是只调用一次this.onUserConnected(),还是使用不同的参数多次调用它?
  • @jfriend00 一次

标签: websocket socket.io


【解决方案1】:

socket.io 是否会释放大量处理能力?

不清楚你在这里的意思。 socket.io 本身只是使用 TCP 发送 webSocket 消息。它不会使用很多处理能力,但如果您向大量客户端发送大量消息,则可能会占用一些 CPU。

将用户发送到所有连接的套接字是否很好?

一般来说,您应该只向客户发送他们实际需要的信息。向所有客户端发送有关所有客户端的所有信息将限制您的可扩展性,因为所有客户端可能会有大量更新。客户端接收到的每个传输也会消耗一些功率(与电池供电的设备相关),因此限制传输对客户端也有好处。

最有效的方案通常是让客户端准确地告诉服务器它想要什么信息,让服务器只将该信息发送给客户端,并仅在它发生变化时发送。这比让服务器将所有信息发送给客户端并让客户端对其进行排序更有效。

在客户端,我获取所有 登录/注销,只需检查 user_id 是否等于其中之一 arrayOfUserID 中的值然后返回?

与上述相同的答案。如果您可以让服务器仅在其感兴趣的事情发生时向客户端发出警报,那通常会更好。

注意:我知道 Socket.io Rooms,但在我的应用程序中,我处理了多个 选项卡,我有一个动态命名空间

您可以将 socket.io 房间用于动态创建的房间。您尚未描述您的实际应用程序,但房间是用户组相互通信或更新的一种极好的内置方式,并且服务器可以使用房间的内置功能轻松管理这种通信。

【讨论】:

    猜你喜欢
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 2015-12-25
    相关资源
    最近更新 更多