node.js模拟qq漂流瓶
(文章是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com)
node.js模拟简易漂流瓶,页面有扔瓶子和捡瓶子的功能,一个瓶子只能被捡到一次,阅读完就置状态位,如果没有瓶子,提示无瓶子,等等,功能很丰富哦,let‘s go
(1)安装python,node,由于这是很久之前装的了,此次不再重复。
(2)下载sqlite3数据库,网址为http://www.sqlite.org/download.html,
选择:Precompiled Binaries for Windows,下载完别忘记把这个文件放在c盘的windows下的sysytem32文件夹里。
(3)新建项目文件夹,打开终端,进入文件夹目录,先安装一下必要的插件,命令如下,npm install cryptojs,npm install sqlite3
开始建数据库,sqlite3 bottle.db就可以建新的bottle数据库啦,然后建表
CREATE TABLE message(
id Integer primary key autoincrement,
nick_name varchar(20),
content varchar(4096),
is_read boolean,
create_time datetime,
update_time datetime
);
整个项目的代码就是html文件和js文件组成的,非常和谐的,
前端html建立XMLHttpRequest,在onreadystatechange这个回调函数里判断状态,用的是最原始的ajax异步调用,get方式,这决定了漂流瓶不能内容太多,url传值有数量限制,最大是4k。
核心代码如下:都是毫无悬念的东西,原生的,求大神指点框架版本的怎么破。
xhr.onreadystatechange=function(){
if(xhr.readyState == 4){
if(xhr.status == 200){
alert(xhr.responseText);
var returnValue = JSON.parse(xhr.responseText);
alert(returnValue.result);
}
else if(xhr.status == 500){
alert("出错了");
}
}
}
xhr.open('get','/send?content='+encodeURIComponent(c)+"&name="+encodeURIComponent(nickName),true);
xhr.send(null);
server部分核心代码:
var url = require("url") 类似的方法进行请求
var db = new sqlite.Database("bottle.db"); 把咱们建好的数据库用起来
http.createServer(........).listen(8080); 监听端口8080,
最后别忘记退出的时候关闭数据库连接
process.on("SIGINT",function(){
console.log("program will exit.");
db.close();
process.exit(1);
})
好叻,把node跑起来吧,在终端输入node bottle_server.js
这个就是咱们刚写好的js的名字,现在可以在浏览器中输入localhost:8080
重定向到了html页面,现在就可以扔瓶子捞瓶子了,哈哈,很有趣啊,虽然捞到的都是自己扔的瓶子
最新文章
- Golang 效率初(粗)测
- ie8下使用knockoutjs遇到的一个模板异常
- POJ 3252 Round Numbers
- JS中 判断null
- Heritrix源码分析(三) 修改配置文件order.xml加快你的抓取速度(转)
- 7款HTML5的精美应用教程让你立即爱上HTML5
- Win10更新补丁失败后出现无法更新正在撤销 解决办法
- css中单位px和em,rem的区别[转载]
- java 打印近似圆
- Chatbot思考录
- 关于” 记一次logback传输日志到logstash根据自定义设置动态创建ElasticSearch索引” 这篇博客相关的优化采坑记录
- TCP断线重连
- aria2的下载配置
- 常用Iview样式布局
- 语音识别功能_微信小程序代办清单任务
- 高并发应对:淘宝CDN缓存服务器部署探秘
- 使用 PYTHON 为 PIP 搭建 HTTP 代理
- 剑指offer-矩形覆盖-斐波那契数列(递归,递推)
- 制作一款3D炸弹超人游戏
- 找到链表的倒数第k个节点 python
热门文章
- Coding the Matrix (1):向量
- Linq之常见关键字
- jQuery基础之(三)jQuery功能函数前缀及与window.onload冲突
- 第五章:javascript:队列
- 小记:Quartz StartNow() 无效
- 使用Git进行代码管理心得
- HDU 1171 Big Event in HDU 多重背包二进制优化
- 用CSS做长度超过长度显示‘...’,当鼠标放上时显示全部内容
- ansible 配置运行环境
- 在 Visual Studio 2013 中创建 ASP.NET Web 项目(1):概述 - 创建 Web 应用程序项目