javascript – 在(“消息”)处理程序上定义Socket.io的最有效方法

Socket.io的例子都遵循这种模式
io.sockets.on("connection",function(mySocket){
    mySocket.on("my message",function(myData){
        ...
    });
});

在我看来,这将为每个连接创建一个新的回调函数.假设每个套接字都以相同的方式响应消息,那么为所有套接字定义一次处理程序就不会有更高的内存效率,如下所示:

function myMessageHandler(data){
    ...
}

io.sockets.on("connection",myMessageHandler);
});

甚至这个:

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

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

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)