作者:vousiu 出處:http://www.cnblogs.com/vousiu 本實例參考自Mike Cantelon等人的《Node.js in Action》一書。 chat.js 這個程式在客戶端瀏覽器運行。 定義一個Chat類,給定一個socket,它可以往這個socket發送事件。 ...
作者:vousiu
出處:http://www.cnblogs.com/vousiu
本實例參考自Mike Cantelon等人的《Node.js in Action》一書。
chat.js
這個程式在客戶端瀏覽器運行。
定義一個Chat類,給定一個socket,它可以往這個socket發送事件。
var Chat = function(socket) { this.socket = socket; }
指定socket。
Chat.prototype.sendMessage = function(room, text) { var message = { room: room, text: text }; this.socket.emit('message', message); };
定義sendMessage成員。
{room: 'roomName', text: 'text'} <---------- 'message' ----------- chat
Chat.prototype.changeRoom = function(room) { this.socket.emit('join', { newRoom: room }); };
定義changeRoom成員。
{newRoom:'roomName'} <------- 'join' -------- chat
Chat.prototype.processCommand = function(command) { var words = command.split(' '); var command = words[0].substring(1, words[0].length).toLowerCase(); var message = false; switch(command) { case 'join': words.shift(); var room = words.join(' '); this.changeRoom(room); break; case 'nick': words.shift(); var name = words.join(' '); this.socket.emit('nameAttempt', name); break; default: message = 'Unknown command'; break; } return message; };
定義處理命令成員。
若命令為join,則changeRoom;
若命令為nick,則name <------- 'nameAttempt' -------- chat
否則,返回錯誤信息。