尝试构建某种智能解析器'对于socket.on('message', function(data) {})
,我可以做一个'切换/案例'在第一个参数上。是否有一些该参数的全局句柄,以便像下面这样的东西工作?
socket.on(socket.token.name, function(data) {
switch (socket.token.name) {
case "table:dashboard":
// do something with data
break;
case "table:monitor":
// do something with data
break;
}
});
有什么想法吗?我已经仔细阅读了socket.io文档,但还没有找到 的任何提示。或者其他一些方向来实现相同的想法?
答案 0 :(得分:0)
将整个事物包装在一个闭包中。
function getHandler(name) {
return function(data) {
switch (name) {
case "table:dashboard":
// do something with data
break;
case "table:monitor":
// do something with data
break;
}
}
}
socket.on("foo", getHandler("foo"));
socket.on("bar", getHandler("bar"));
更优化的是,您将返回一次不同的函数,而不是每次都运行switch-case。
function getHandler(name) {
switch (name) {
case "table:dashboard":
return function(data) {}
break;
case "table:monitor":
return function(data) {}
break;
}
}
或者,只需将第二个参数绑定到您的处理程序:
socket.on("table:dashboard", handler.bind(handler, "table:dashboard"))
function handler(name, data) {
switch (name) {
case "table:dashboard":
// do something with data
break;
case "table:monitor":
// do something with data
break;
}
});