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

否则,返回错误信息。

最新文章

  1. Windows下Nginx Virtual Host多站点配置详解
  2. testng 教程
  3. 使用automake等命令自动生成Makefile文件 (转载)
  4. uva oj 567 - Risk(Floyd算法)
  5. [ROS]3 Linux编程练习
  6. X86平台下嵌入式linux触摸屏解决方案(usb触摸屏控制器+完美校准方案+触摸屏QTE开发环境搭建)
  7. Windows API 的数据类型与 Delphi 数据类型对照表
  8. 【JS】Intermediate3:AJAX
  9. JMS &amp; ActiveMQ小结
  10. JqMobi学习
  11. rac 中节点的vip在该节点启动不了,在其它节点正常启动。
  12. ecshop加入购物车效果(各个页面)
  13. react中PureComponent浅对比策略
  14. 容器虚拟网卡与网桥docker0虚拟网卡的veth pair的配对
  15. 推荐一个免费的在线IDE和终端
  16. 剖析ElasticSearch核心概念,NRT,索引,分片,副本等
  17. python note 10 函数变量
  18. 对mysql 单表备份
  19. js或jsp 获取项目路径常用方法
  20. egret -纹理集的制作

热门文章

  1. WCF 依赖注入-- Attribute
  2. 拼接LINQ动态表达式
  3. Activityn 生命周期
  4. Ado.net 数据库读取文件
  5. C# 如何获取当前应用程序的上一级路径
  6. python装饰器通俗易懂的解释!
  7. Mono.Ceil 无法保存Silverlight 程序集
  8. php常用函数time
  9. Welogic中的JMS
  10. FFmpeg相关资料