Node聊天程序实例03:chat.js

news/2024/7/5 20:37:05

作者: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

否则,返回错误信息。

转载于:https://www.cnblogs.com/vousiu/p/Node_ChatApp_03.html


http://www.niftyadmin.cn/n/1941914.html

相关文章

23、Cocos2dx 3.0游戏开发找小三之粒子系统:你那里下雪了吗?

重开发人员的劳动成果。转载的时候请务必注明出处&#xff1a;http://blog.csdn.net/haomengzhu/article/details/30485919春雨惊春清谷天&#xff0c;夏满芒夏暑相连&#xff0c; 秋处露秋寒霜降&#xff0c;冬雪雪冬小大寒。在大自然中&#xff0c;随处可见一些大规模运动的物…

【练习】trace文本重建控制文件

这个小练习是针对控制文件全部丢失后怎么能快速的重建一个控制文件&#xff0c;快速的起库 1.备份控制文件到trace下 SQL> alter database backup controlfile to trace;Database altered. 2.trace文本放在user_dump_dest的路径下 SQL> show parameter dump;NAME …

Camera Calibration in detail

Tomorrow转载于:https://www.cnblogs.com/stevenxiu/p/5612916.html

硬盘和计算机的接口类型有哪两种,常见的不同类型接口的固态硬盘有哪些

固态硬盘的读写速度要比机械硬盘快。电脑用户在安装时&#xff0c;都会购买固态硬盘作为系统盘。一些老用户对电脑机器进行升级。升级和升级的首选是硬盘。立即改进。机械硬盘只有一种SATA接口&#xff0c;而硬盘与硬盘不同。它的接口和种类繁多。用户在选择时自然要注意与电脑…

django 模板 (ああああああああ!かぴ)

一 常用 1. {{ 不存在 | default : "xx" }} 2. {{ name | length }} 3. {{ xx | slice "1:-1" }} 4. {{ now | date: "Y-m-d H:i:s" }} now datetime.now() 5. {{ xx | truncatechars : x }} 截取文字 6. {{ xx | truncatewords : x }} …

ES6 数组解构赋值

1.数组解构 let [a, b, c,d] ["aa", "bb", 77,88]; alert(a) //弹出aa 可以用babel 解析看ES5的转换结果 嵌套数组解构 let [a,b,[c,d],e] ["aa",bb,[33,44],55]; alert(c) //弹出33 空缺变量 let [a,b,,e] ["aa",bb,[33,…

第二个议题

① 在每个问题后面&#xff0c;请说明哪一章节的什么内容引起了你的提问&#xff0c;提供一些上下文 ② 列出一些事例或资料&#xff0c;支持你的提问 。 ③ 说说你提问题的原因&#xff0c;你说因为自己的假设和书中的不同而提问&#xff0c;还是不懂书中的术语&#xff0c;还…

山东省高中学业水平考试计算机考试教材,2017年山东高中学业水平考试科目

考试科目(1)会考的文化科目为&#xff1a;语文、数学、外语、思想政治、物理、化学、历史、地理、生物、信息技术、通用技术&#xff0c;共计11科&#xff1b;实践科目为&#xff1a;物理、化学、通用技术、生物的实验操作。文化科目的会考方式分为考试、考查两种&#xff0c;采…