【发布时间】:2012-07-27 05:33:00
【问题描述】:
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 会推荐一种浪费内存的做法?我们是否希望在“连接”回调的闭包中保留套接字的状态变量?
【问题讨论】:
-
您正在从事一种被称为“过早优化”的不必要的担忧。如果开销的差异决定了您的应用程序的成败,那么 node.js 是错误的平台选择。
-
我的应用程序逻辑是在数十个套接字消息上执行的,并为数千个同时连接提供服务。如果每个连接都重复数千行回调,那对我来说似乎是一个很大的优化疏忽
标签: javascript node.js websocket socket.io