关于socket.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是一个具有两种chat
和system
方法的对象。
我会假设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运行不同的命令