socket.io的helloworld

来源:互联网 发布:dazzshop知乎 编辑:程序博客网 时间:2024/06/06 17:38

之前有提到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
浏览器会向服务器发送消息,服务器会回复浏览器一个消息