【发布时间】:2017-04-26 19:13:46
【问题描述】:
我正在从 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 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); }
});
});
在示例中,有一个 chat message 事件,但理想情况下还有许多其他事件我想实时推送给客户端,例如:
用户发送消息,用户开始/停止输入,用户喜欢帖子,用户邀请您成为朋友/群组成员,等等。
我想实时捕捉许多事件,但似乎必须有比将io.on() 语句塞满所有事件更好的方法。
我研究过 Node OOP,但不确定它是否对这个应用程序有帮助。
那么,如果我们有 socket.on() 语句,那么像我描述的那样包含事件捕获的最佳做法是什么?
【问题讨论】:
标签: javascript node.js sockets events dom-events