基于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>
下载地址
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指令安装

牛。。求源码分享,正在学习中,,