Get Started: Chat application
根据指南,我们来创建一个聊天应用。
Introduction
使用流行的技术栈(例如PHP)去写一个聊天应用传统意义上是比较难的。这样涉及到了服务器的轮询,跟踪时间戳,而且应该是比较慢的。
Socket解决了大多数的实时聊天方案,在客户端和服务端提供实时的双向通道。这就意味着服务端可以向客户端推送消息。当你发送一条消息,服务端可以获得然后推送到其他连接的客户端。
The web framework
第一步就是创建一个html页面,提供表单和消息列表。我们准备使用node的web框架express。首先创建package.json配置文件。
{
"name" : "socket-chat-example",
"version" : "0.0.1",
"description" : "my first socket.io app",
"dependencies" : {}
}
然后安装express:
npm install express --save-dev
express安装后,我们在当前目录下创建一个index.js文件设置我们的应用。
var app = require('express')()
var http = require('http').Server(app)
app.get('/', function(req, res) {
res.send('hello world
')
})
http.listen(3000, function() {
console.log('listening on 3000')
})
如上:express初始化一个应用程序是可以提供给http服务的函数处理程序;我们定义了一个路由当我们进入主目录时被调用;我们创建了一个监听3000端口的http服务。
我们执行node index.js可以看到:
打开浏览器,输入http://localhost:3000可以看到:
Serving HTML
目前,我们准备在index.js文件中调用res.send()发送一个html字符串。如果我们把整个html字符串都放在里面,那样看起来会很混乱。那么,我们准备创建一个index.html文件,然后发送。
//这里我们通过sendFile这个方法
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
``
创建index.html文件:
Socket.IO chat
然后重启服务,打开浏览器可以看到如下:
![clipboard.png](/img/bVXQoz)
##### **Integration Socket.IO**
Socke.IO有两部分组成:
- 服务端通过node模块socket.io集成
- 客户端通过socket.io-client库加载
在开发期间,socket.io会自动的服务客户端,所以目前我们只要安装该模块:
npm install socket.io --save-dev
然后重新修改index.js:
var app = require('express')()
var http = require('http').Server(app)
var io = require('socket.io')(http)
app.get('/', function(req, res) {
res.sendFile(__dirname + '/index.html')
})
io.on('connection', function(req, res) {
console.log('a user connected')
})
http.listen(3000, function() {
console.log('listening on 3000')
})
如上,可以看到传入http服务初始化一个socket.io实例,然后通过connection事件监听新连接。
然后再修改以下index.html文件,在