Cover
效果图
老样子,还是先放个效果图,动态图,有点大(4M)请耐心等加载。
随便说说
最近在做东西的时候有一个对战功能,需要用到Socket技术,于是了解了一番相关的实现方案,最后选择了Nodejs以及基于Node的socket.io 最主要的原因还是Node比较好写,相比于PHP好多个函数来说简洁太多了。
本文虽说是从0开始,但不是说无编程基础的也可以,至少要懂以下东西。
- 基础的HTML
- Javascript语法,很基础的jQuery语法
因为本文是说从0开始,所以必须要说一下Socket是什么东西,有较好基础的可以跳过这段直接到 如何开始 处开始。
为什么要使用Socket
不引官话,我直接按照我的理解通俗来说。通常的网站或是其他的联网的应用,因为要获取数据,都需要发送一个请求,这个请求你可以将它看作一个网址,比如你在浏览器键入网址"www.baidu.com"回车,就是请求了这个地址,然后它会返回给你一些东西,前面的就会给你返回百度首页的页面,浏览器自己会解析它(这又涉及到了其他的方面,我们暂且不谈)。
所以通常的用户和服务器的通信就只能是:用户发送请求 -> 服务器接受请求 -> 服务器返回结果 -> 用户收到结果。在这种情况下,想要做即时应用就无法实现。
想想一下,现在你和别人在对战,你打掉了他8点血,你可以告诉服务器这个信息,但是服务器没有办法在你告诉它之后,也迅速告诉你的对手,他掉了8点血。除非对手当时发送一个请求,来查看自己当前血量。但是游戏是实时的,不可能你每隔几秒钟就询问服务器更新一下自己的血量。
这里的需求就是让己方的数据发送之后即时发送给对方,那么只需要服务器也能够以主动发送数据给用户即可,所以需要一种客户端<=>服务器双向通信的技术,就是Socket。
BTW
本文也相当于是Socket.io官方Demo的翻译,想看原教程的可以去看看原文。
如何开始
那我们知道了为什么要用Socket之后,我们来盘算一下该如何完成这个项目。
首先我们要用Nodejs,那就要去安装Nodejs,网上教程很多,我不想赘述,给你们一篇我觉得适合的教程:Nodejs环境搭建
装好之后在cmd中键入 node -v
与 npm -v
,显示版本号就说明安装没有问题了。
然后我们先新建一个工程文件夹,名字就叫node-chat
,在里面我们新建两个文件,一个是server.js
,一个是index.html
,注意后缀名。
然后先安装两个东西。
打开CMD
因为npm是国外的库可能有点慢,可以安装cnpm,执行下面命令
npm install -g cnpm --registry=https://registry.npm.taobao.org
然后输入
cnpm install --save express
等待安装成功,再安装
cnpm install --save socket.io
都安装成功之后我们就可以开始着手Coding了。
功能分析
我们要做一个聊天室,简单起见,就不做私聊的功能了,那么我们想要的功能可以是这些:
- 每个人有自己的昵称,在进入聊天室的时候自己输入。
- 每个人都可以发言
- 有一个区域用来展示所有的发言,并且要实时更新
- 有人加入的时候提示xxx加入了群聊