javascript - 在 ("message"上定义 Socket.io 的最有效方法)处理程序

标签 javascript node.js websocket socket.io

Socket.io 的例子都遵循这个模式

io.sockets.on("connection", function(mySocket){
    mySocket.on("my message", function(myData){
        ...
    });
});

在我看来,这将为每个连接创建一个新的回调函数。假设每个套接字都以相同的方式响应消息,像这样为所有套接字定义一次处理程序是否会更节省内存:

function myMessageHandler(data){
    ...
}

io.sockets.on("connection", function(mySocket){
    mySocket.on("my message", myMessageHandler);
});

甚至这样:

io.sockets.on("my message", function(mySocket, myData){
    ...
});

如果是这样,为什么 Socket.io 会推荐一种浪费内存的做法?我们是否希望在“连接”回调的闭包中保留套接字的有状态变量?

最佳答案

从另一个 Angular 来看,第一种形式很容易阅读(因为省略了很多细节)。我认为这种形式最能说明图书馆的运作方式。出于同样的原因,我相信 Node 网站本身也使用了类似的风格。我认为这正是它在这些地方使用的原因。

阅读博客和讨论几分钟后表明开发人员通常选择传递命名函数。尽管我确信它可以提高性能,但主要动机无疑是可读性。我认为随着函数的增长,您会发现第二种形式(或更简洁的形式)更易于使用。

关于javascript - 在 ("message"上定义 Socket.io 的最有效方法)处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11706426/

相关文章:

javascript - React-native:如何在tvOS中实现图像缓存?

javascript - Gwt 按钮需要双击才能加载 div 中的所有数据

node.js - 带有 command.js 的未命名参数

javascript - 在没有 node.js 的情况下独立使用 socket.io

java - Tomcat websocket 关闭连接

javascript - 添加图像的上一个和下一个按钮

javascript - 从外部 javascript 调用函数时,IE 失败?

javascript - 使用 node.js、流和 promise 下载文件

node.js - 填充对象ID的数组

需要 Java websocket 客户端