之前有提到websocket有一些端框架,可以简化编程。今天这里用socket.io 和 node.js 写一个helloworld的websocket通讯
其中有一个是Socket.IO,Socket.IO是属于Node.js(NodeJs是服务器端的编程技术javascript)的一个模块,Node.js可通过 Socket.IO 库轻松实现 WebSocket的功能。
需要知道的几个知识点:
javascript作为一门语言,可以做服务器端的编程,经典案例就是Node.js
Node.js采用事件驱动,异步编程,为网络服务而设计http://baike.baidu.com/view/3974030.htm
Node.js需要执行的服务环境,可以在官网下载,我用的是 http://nodejs.org 支持window
执行命令: node xxx.js 就会执行xxx.js脚本
Socket.io 的官网http://socket.io/ 和 Node.js配合使用
socket.io模块没有被包含在Node.js中,所以要安装,使用命令 npm install socket.io 如果在运行时出现找不到某模块,使用这个命令安装即可
Node.js的第一个helloworld
1.写一个js文件 helloworld.js
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}
).listen(8080, '127.0.0.1');
console.log('Server running at http://127.0.0.1:8080/');
2.启动脚本 cmd中到该js目录下,执行命令 node helloworld.js
会发现打印了:Server running at http://127.0.0.1:8080/
3.在浏览器中输入http://127.0.0.1:8080/ 页面显示 HelloWorld
socket.io实现websocket功能的第一个例子
1.写一个helloworld.html文件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<script src="/socket.io/socket.io.js"></script><!--从服务器获取socket.io.js 只要你的服务器安装了socket.io 模块那么就可以找到-->
<script>
var socket = io.connect('ws://127.0.0.1/'); // 建立到服务器的连接
socket.emit('client', 'hello world!' ); //向服务器发送数据 在服务器端可以接收到名字是client的数据
socket.on('server', function (data) { //接收来自服务器的 名字叫server的数据
alert(data);
});
</script>
<body>
</body>
</html>
2.在旁边写一个脚本 helloworld_server.js
var server=require('http').createServer(handler); // 用handler来处理请求
var io = require('socket.io').listen(server); // socket.io 对象
var fs=require('fs');//用来操作文件的对象
server.listen(80);//监听本机80端口号
//处理请求的函数
function handler(req,res){//req 表示请求对象 res 表示响应对象
//__dirname是应用程序根目录,下面表示把根目录中的helloworld.html文件读进来,并从响应发出去
fs.readFile(__dirname+'/helloworld.html',
function(err, data){
if(err){
//如果有异常,那么向客户端发送错误信息
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);//发送文件中的内容 并结束响应
});
}
//监听程序
io.sockets.on('connection', function (socket) {
console.log('connection success');
//接收到来自客户端的名称为client的数据
socket.on('client', function (data) {
console.log('received message from client:'+data);
socket.emit('server','I received you message:'+data);//向客户端发送名字为server的数据
});
});
3.启动服务器:node helloworld_server.js
4.在浏览器输入http://127.0.0.1
浏览器会向服务器发送消息,服务器会回复浏览器一个消息