分类:Node.js     文章(2) 篇

基于NodeJS+Socket的聊天室 (2012-02-12)

基于NodeJS+Socket的聊天室 NodeJS服务端代码

var http	= require('http'),
	io		= require('socket.io'),
	fs		= require('fs');

//配置
var config = {
	port : 8888
}

http = http.createServer(handler);
http.listen(config.port);
io = io.listen(http);

function handler(req, res) {
	fs.readFile(__dirname+'/client.html',
	function(err, data){
		req.setEncoding(encoding="utf8");
		res.writeHead(200);
		res.end(data);
	});
}
//'connection' 是socket.io 保留的,不能错哦
io.sockets.on('connection',function(socket){ 
	 //'msg'是我们自定义的,客户端听取的时候要指定同样的事件名
	socket.emit('msg',{hi:'Happy new year.'});
	 //'msg'需要和客户端发送时定义的事件名相同
	socket.on('msg',function(data){
		console.log('Get a msg from client ...');
		console.log(data);
		socket.broadcast.emit('user message',data);
	});
});

客户端代码

<!DOCTYPE html>
<html>
 <head>
  <title> 聊天室 </title>
  <script src="/socket.io/socket.io.js"></script>
  <script type="text/javascript">

	var socket = io.connect('http://localhost:8888');

	socket.on('user message',function(msg){
		msgbox(msg.msg);
	});
	
	function sendMsg(){
		var inpt = document.getElementById('txtInput');
		var str = inpt.value;
		msgbox(str);
		//发送
		socket.emit('msg',{msg:str});
		console.log('[client]' + str);
		inpt.value = "";
		inpt.focus();
	}
	function msgbox(str){
		var box = document.getElementById('box');
		box.innerHTML += '<b>访客说</b>:'+str + '<br<-----<br>';		
	}
  </script>
 <style type="text/css">
 	#box {
		overflow: auto;
		width:500px;height:300px;border:1px solid #dcdcdc;
	}
	#txtInput {
		width:430px;	
	}
 </style>
 </head>

 <body>
	<h2>聊天室</h2>
	<div id='box' ></div>
	<input type='text' id='txtInput' ><input type='button' value='发送' onclick='sendMsg();'>
 </body>
</html>

下载地址

点击查看原文阅读(77) | 评论(0) | 分类:Node.js

CentOS环境中安装Node+Express框架 (2011-11-18)

1. 技术准备:

node.js			写本文的时候我采用的版本是0.4.5, Win用户需要自行编译node.exe
npm			类似Ruby中的RubyGems, node.js包依赖管理工具
express			类似Ruby中的Sinatra, 一个简单的Web框架
markdown.js		node.js中的markdown解析器, 什么是markdown?? 用过GitHub的朋友应该知道,readme.md文件
prettify.js		google-code-prettify, 提供在线的语法高亮支持,支持语法包括C-like, Java, Python, shell等大多数语言


2. 安装node.js

先安装gcc-c++编译环境和openssl

yum install gcc-c++ openssl-devel
当前最新版师0.6.2,我装的是0.6.1版本
wget http://nodejs.org/dist/v0.6.2/node-v0.6.2.tar.gz
tar –xvf node-v0.6.2.tar.gz
cd node-v0.6.2
./configure
make
make install

如果在使用./configure时报错:Node.js could not configure a cxx comiler!,解决办法:
yum groupinstall "Development Tools”

node -v测试一下是否安装成功

var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello Node.js\n');
}).listen(8124, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8124/');

将以上代码存为hello.js,然后使用node hello.js运行,在控制台上按住ctrl键,会出现下划线直接点击。如果打开的网页不能直接浏览,则将上面代码中的127.0.0.1 –> 换成机器的IP地址


3. 安装 npm

$ curl http://npmjs.org/install.sh | sh
如果安装出问题,有可能是nodejs版本过低,安装完成后,
$ npm -v
看看是否安装成功


4.node的express框架

由于这个有点特殊,需要为npm添加-g参数, 刚开始安装的时候没有加,导致不能使用epress 命令行参数 $ npm install -g express $ epxress -v 看看是否安装成功

创建一个express项目看看

$ express nodeblog
$ cd nodeblog

express目录结构

./	        根目录,我们的node.js代码都会方这个目录
package.json	npm依赖配置文件, 类似ruby中的Gemfile, java Maven中的pom.xml文件. 一会需要在这里添加 markdown-js     项目依赖
app.js		项目的入口文件
public/		存放静态资源文件, jquery/prettify.js等静态库会方这里,当然自己编写的前端代码也可以放这里
views/		模板文件, express默认采用jade, 当然,你也可以使用自己喜欢的haml,JES, coffeeKup, jQueryTemplate等模板引擎

运行程序看看

$ npm install $ node app.js 访问http://localhost:3000/ node_modules/ 存放npm安装到本地依赖包,依赖包在package.json文件中声明,使用npm install指令安装

点击查看原文阅读(261) | 评论(0) | 分类:Node.js