关于so​​cket.io事件的问题在下面的代码中连接起来

在本文附带的node.js / socket.io代码中,以下代码用于连接事件:

socket.on('message', function(message) { var handler = messageFactory[message.messageType]; $chatMessages.append(handler(message)); }); 

引用messageFactory作为数组(或至less使用[]符号)的逻辑/效果是什么? 它是否为不同的messageType创build不同的句柄?

谢谢!

引用messageFactory作为数组(或至less使用[]符号)的逻辑/效果是什么? 它是否为不同的messageType创build不同的句柄?

messageFactory是一个具有两种chatsystem方法的对象。

我会假设message.messageType"chat""system"

所以messageFactory[message.messageType]只是获取两个方法之一。

然后handler(message)调用该方法。

这是因为messageFactory.chat === messageFactory["chat"]

如果你看看服务器文件(“清单5:chatRoom模块”),你会看到方法返回

 return { messageType: 'system', text: originalNick + ' changed nick to ' + newNick }; 

所以服务器返回一个消息对象,在客户端读取一个messageType属性,看起来messageType只是"chat""system"

该代码基本上是面向对象的命令devise模式。 它根据返回的对象types运行不同的命令