Javascript 处理Socket.io事件的最佳实践?
我正在从ajax轮询切换到socket.io实时数据推送,但我对管理事件的最佳实践有一个疑问 假设我有一个这样的基本服务器:Javascript 处理Socket.io事件的最佳实践?,javascript,node.js,sockets,events,javascript-events,Javascript,Node.js,Sockets,Events,Javascript Events,我正在从ajax轮询切换到socket.io实时数据推送,但我对管理事件的最佳实践有一个疑问 假设我有一个这样的基本服务器: var Clients = []; // Event fired every time a new client connects: io.on('connection', function(socket) { Clients.push(socket); // What else should go in here? // Individual f
var Clients = [];
// Event fired every time a new client connects:
io.on('connection', function(socket) {
Clients.push(socket);
// What else should go in here?
// Individual functions for each event?
socket.on('chat message', function(msg){
console.log(':> '+msg);
io.emit('chat message', msg);
});
// When socket disconnects, remove it from the list:
socket.on('disconnect', function() {
var index = Clients.indexOf(socket);
if (index != -1) { Clients.splice(index, 1); }
});
});
在本例中,有一个聊天信息事件
,但理想情况下,还有许多其他事件我希望实时推送到客户端,例如:
用户发送消息,用户开始/停止键入,用户喜欢帖子,用户邀请您成为朋友/组成员,等等
我想实时捕获很多事件,但似乎总有比把io.on()
语句塞满它们更好的方法
我已经研究了Node OOP,但不确定它在这个应用程序中是否一定有用
那么,在我们有socket.on()
语句的地方,最好的做法是什么,包括像我所描述的那样的事件捕获
我想实时捕获很多事件,但它
似乎总有比死记硬背io.on()更好的方法
声明中充满了它们
没有。在io.on('connection',…)
中,您有一个与新连接相关的socket
变量的闭包。因此,您希望从该套接字响应的任何事件处理程序都会进入该套接字,或者进入从该套接字调用并将套接字传递给的某个函数。这就是它的工作原理
仅供参考,为了模块化,您不必将所有事件处理程序放在一个io.on('connection',…)
中。如果将io
对象导出到其他模块或在模块构造函数中传递给它们,则可以让其他模块创建自己的io.on('connection',…)
侦听器,并在自己的io.on('connection',…)
中安装自己的事件处理程序io
是一个EventEmitter,因此它可以为连接
事件支持任意多个侦听器,并将通知所有侦听器
我想实时捕获很多事件,但它
似乎总有比死记硬背io.on()更好的方法
声明中充满了它们
没有。在io.on('connection',…)
中,您有一个与新连接相关的socket
变量的闭包。因此,您希望从该套接字响应的任何事件处理程序都会进入该套接字,或者进入从该套接字调用并将套接字传递给的某个函数。这就是它的工作原理
仅供参考,为了模块化,您不必将所有事件处理程序放在一个
io.on('connection',…)
中。如果将io
对象导出到其他模块或在模块构造函数中传递给它们,则可以让其他模块创建自己的io.on('connection',…)
侦听器,并在自己的io.on('connection',…)
中安装自己的事件处理程序io
是一个EventEmitter,因此它可以为连接
事件支持任意多个侦听器,并将通知所有侦听器。@DanL-我添加了另一段关于模块化另一个选项的内容。@DanL-我添加了另一段关于模块化另一个选项的内容。