在nodejs实现websocket中什么方法实现麻将中自动出牌功能的?

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
“我来~我见~我征服!”
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(3144)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'如何在Windows下的V8/Nodejs中实现ActiveXObject',
blogAbstract:'了解Nodejs,根本上其实了解V8,然后然后千万不要忘了最终的目的是要实现类似JScript中的new ActiveXObject功能------这才是最终的目标! 1. 网上找的实现方法 网上找了半天,没有一个实现的解决方案。那些大侠们的江湖可能都是Linux,从来不操心Windows的。找到唯一靠谱的解决方案如下:参见1:
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}Cocos Creator JS房卡麻将棋牌游戏源码,Cocos2D-X,游戏源码,6m5m游戏素材
请求处理中...
或 20 积分 ()
下载132浏览人数5897交付方式直接下载
注意:【1】本站只是个免费分享平台,并不敢保证所有源码人人都能编译,因素太多,旨在学习研究,如果您有顾虑或斤斤计较就请不要下载了,大家都不容易,互相理解,才能让更多的好资源出现!【2】本站资源仅限于学习研究,请在下载后24小时内删除,不要用于任何商业用途。【3】部分素材压缩包因体积过大而上传到百度等网盘上,如果发现在本站下载的压缩包只要有几K大小,说明该压缩包里只是网盘的下载链接,并非文件损坏,本站的所有素材都是经过了审核,大家可放心下载,欢迎监督反馈。【4】做个好平台真心不容易,我们一直在努力,因本站素材量大,难免会出现某网盘下载链接失效等问题,请大家及时反馈,我们会及时修正保证您可以拿到素材,请大家支持和理解!
免责声明:本网所展示的素材与服务信息由买卖双方自行提供,其真实性、准确性和合法性由信息发布人负责。本网不提供任何保证,并不承担任何法律责任,如有不妥之处请及时反馈,本网将会妥善处理。
友情提醒:本站旨在游戏开发的学习,所分享的素材资源均来源于网络,仅适用于学习参考,尊重版权,禁止用于任何商业用途,否则后果自负,所展示的素材版权归原作者或公司所有,如果本站素材侵犯了您的权益,请联系我们,我们将及时处理。
猜您喜欢的游戏素材
5金币 / 个
1金币 / 个
2金币 / 个
0金币 / 个
1金币 / 个
1金币 / 个
0金币 / 个
1金币 / 个
2金币 / 个
0金币 / 个
好评率100%
发布素材31node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
投稿:junjie
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用的功能,从而避免大量重复的CTRL+C终止程序动作,需要的朋友可以参考下
在开发或调试Node.js应用程序的时候,当你修改js文件后,总是要按下CTRL+C终止程序,然后再重新启动,即使是修改一点小小的参数,也总是要不断地重复这几个很烦人的操作。有没有办法做到当文件修改之后,Node.js自动重新启动(或重新加载文件)以节省时间呢?一开始我是想到用grunt的watch模块来监控文件变化,但后来在网上一查,原来我们想到的,别人早已想到,并且已经做得很好。正是这样一个可以实现这种需求的Node.js模块。
根据Github上的说明,Node Supervisor原本是用于服务器上Node.js应用崩溃的时候,自己重新启动。当然它也可以监控你的项目的js(或CoffeeScript)文件变化,进而重启来方便我们调试应用程序。
安装方法(以全局模块安装):
npm install supervisor -g
假设你的Node.js程序主入口是app.js,那么只需要执行以下命令,即可开始监控文件变化。
supervisor app.js
Supervisor还支持多种参数,列举如下:
//要监控的文件夹或js文件,默认为'.'
-w|--watch &watchItems&
//要忽略监控的文件夹或js文件&
-i|--ignore &ignoreItems&
//监控文件变化的时间间隔(周期),默认为Node.js内置的时间
-p|--poll-interval &milliseconds&
//要监控的文件扩展名,默认为'node|js'
-e|--extensions &extensions&
//要执行的主应用程序,默认为'node'
-x|--exec &executable&
//开启debug模式(用--debug flag来启动node)
//安静模式,不显示DEBUG信息
-q|--quiet
supervisor myapp.js
supervisor -w py_scripts -e 'py' -x python myapp.py
supervisor -w lib, server.js, config.js, server.js
实现同样功能的类似产品还有和,这两个我都没用过。但是从文档上来看,前者和Supervisor一样都是极简的5分钟就可以上手的那种,功能比Supervisor稍弱;后者的feature比较多,对应的文档就特别长,估计要研究透也得至少半个小时。选择哪一个,全看项目需求和个人喜好。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具7251人阅读
上传下载(3)
node-js(1)
  由于我的工作重心转向网盘的开发和维护,最近整了一个html版的文件浏览器demo,核心内容为上传和下载,积累了一点经验,这里把其中下载的内容拿出来谈一谈。(本文涉及的前端使用vue.js,后台使用node.js+express)
一个文件的下载
开始之前,回想起我们平时上网下载文件接触到的链接,都是譬如
等这种类型的链接。
  观察后不难发现这些都是get形式的链接。事实上如果用post,后台会在xhr的responseText中返回文件内容,无法保存到本地,不过可以直接append到页面上,然后让用户自己复制。综合以上考虑,因此我们需要用get建立传输的链接。
-从打开开始
  首先,我们根据需要的参数,拼出需要的get链接。要下载一个文件,需要传入它的文件地址和文件名,get链接就可以这么设计:
http://localhost:2333/downloadSingle?dir=f%3A%5Cdemo&name=desktop.ini
其中有两个参数:dir,name
  后台中根据这两个参数拿到对应的文件,用node.js里fs流的方式传出来:
var currFilePath = path.join(dir,name);
var fReadStream = fs.createReadStream(currFilePath);
fReadStream.on("data",(chunk) =& res.write(chunk,"binary"));
  这样下载下来的文件,文件名是混乱的,应该在报文里传入Content-Disposition告诉浏览器文件名(Content-type可以不设置):
"Content-type":"application/octet-stream",
"Content-Disposition":"filename="+encodeURI(fileName)
  当然下载前应该判断下是否存在这个文件,最后后台的代码如下:
router.get('/downloadSingle',function(req, res, next){
var currDir = path.normalize(req.query.dir),
fileName = req.query.name,
currFile = path.join(currDir,fileName),
fs.exists(currFile,function(exist) {
if(exist){
"Content-type":"application/octet-stream",
"Content-Disposition":"filename="+encodeURI(fileName)
fReadStream = fs.createReadStream(currFile);
fReadStream.on("data",(chunk) =& res.write(chunk,"binary"));
fReadStream.on("end",function () {
res.end();
res.set("Content-type","text/html");
res.send("file not exist!");
res.end();
建立好后台之后,前端直接拿链接去测试。浏览器上打开(具体链接自己配置)
小文件在浏览上冒出来了,下载成功。
-无“闪现”下载
  你问怎么用代码下载下来?最简单的方法就是把这个链接放进window.open(url)里面,然后浏览器会新开个页面,建立链接后会关闭访问页,开始下载。然而,这种方法会闪一下,体验起来比较挫。接下来介绍一种没有”闪现”的方法。
  我在《ie8下用iframe解决表单submit以及二级域名跨域的方法》中介绍过如何使用iframe来避免submit提交后页面的自动跳转(),基本原理就是隐藏一个iframe,随浏览器怎么折腾它的死活,反正我们看不到就行了。
  下面贴代码:
function downloadByIframe(url){
var iframe = document.getElementById("myIframe")
if(iframe){
iframe.src = url
iframe = document.createElement("iframe")
iframe.style.display = "none"
iframe.src = url
iframe.id = "myIframe"
document.body.appendChild(iframe)
  需要下载文件时,调用downloadByIframe(url)即可。
  不过这样的方法有个缺点,当后台找不到文件的时候,无法返回错误信息,不知道的还以为挂掉了。如果要即时相应的话,同样可以参考我这篇文章介绍的方法:
多个文件的下载
  以上介绍了下载一个文件时的处理方法。当然很可能会遇到多个文件要下载的情况。
  遇到多个文件要下载时,如果直接使用单个文件下载的方法,可以使用for循环,然后往里面扔downloadByIframe(url),简单暴力。
  不过文件越多越容易引起强迫症,而且对于文件夹而言,无法使用这种方式下载。
  现在很多网盘对待多文件下载的情况时,会先把它们全部压缩起来,打包成一个文件再下载。通过这种思路,我们可以先在服务器端压缩文件,存到本地,然后通过这个压缩文件的路径和名称,拼出get的链接,再使用上文介绍的下载单个文件方法,即可顺利下载。使用这种思路,文件夹同样也可以打包进来。
-archiver压缩模块
  在开始之前,首先要介绍下在本文node.js中使用的压缩模块,npm可以下载到。我是通过《 》(倪舒扬)这篇文章了解到archiver的,该篇文章比较详细的讨论了node.js其他几个压缩模块的利弊,有兴趣可以阅读一下。
  先贴代码:
var output = fs.createWriteStream(path.join("zip",zipName));
var archive = archiver.create('zip', {});
archive.pipe(output);
archive.append(fs.createReadStream(fileDir),{"name":fileName});
archive.finalize();
其中,archive.append只能放入单个文件,如果要放入文件夹或多个文件,需要使用archive.bulk()这个方法:
archive.bulk([
cwd:currDir,
src: [folderName1, fileName],
expand: currDir
官方文档对这个方法有更多的介绍,有兴趣的可以啃一下。
archiver还提供了几个监听事件,用于处理阶段性的事件:
archive.on('error', function(err){
archive.on('end', function(a){
前端代码比较简单,直接贴出来(为省事我用的vue.js,大家可以用jquery或者XMLHttpRequest自己写一个):
download:function(fileArray){
var rootDir = this.$data.
this.$http.post("/download",{
dir:rootDir,
fileArray: fileArray
}).then(function(result){
var data = result.
if(data.code == "s_ok"){
downloadByIframe(data.url);
alert(data.summary);
后台综合上面的archiver,代码如下:
router.post('/download',function(req, res){
var currDir = path.normalize(req.body.dir),
fileArray = req.body.fileArray,
fileNameArray = [];
fileArray.forEach(function(file) {
if(file.type == 1){
fileNameArray.push(file.name);
fileNameArray.push(path.join(file.name,"**"));
if(fileArray.length == 0){
res.send({"code":"fail", "summary":"no files"});
var output = fs.createWriteStream(path.join("zip",zipName));
var archive = archiver.create('zip', {});
archive.pipe(output);
archive.bulk([
cwd:currDir,
src: fileNameArray,
expand: currDir
archive.on('error', function(err){
res.send({"code":"failed", "summary":err});
archive.on('end', function(a){
var downloadUrl = "/downloadSingle?dir="+encodeURIComponent(zipDir)+"&name="+encodeURIComponent(zipName)+"&comefrom=archive";
res.send({"code":"s_ok", "url":downloadUrl});
archive.finalize();
其中需要强调的一点是,archiver的bulk中src传入的文件夹和文件写法不同,可以参考如下格式:
["calendar\**, nginx-1.8.1\**, .DS_Store, desktop.ini"]
-统一下载接口
  后台download这个接口经过改造,可以一起适配单个文件和多个文件下载的情况。
  通过判断fileNameArray中是否为单个文件,可以建立一个分支:
if(filesCount == 1 && fileNameArray.length == 1){
//只有一个文件的时候直接走get
var downloadUrl = "/downloadSingle?dir="+encodeURIComponent(currDir)+"&name="+encodeURIComponent(fileNameArray[0]);
res.send({"code":"s_ok", "url":downloadUrl});
//多个文件就压缩后再走get
//用archiver压缩
  这样前端不管用户选择了几个文件,只需要post download这个接口,拿到返回的链接塞进downloadByIframe()这个方法即可。
  至此,本文文件下载的方法全部介绍完毕。有兴趣的同学可以下载我的demo察看源代码。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:55220次
排名:千里之外
原创:20篇
(1)(1)(5)(1)(10)(2)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'nodejs(2)
财务类客户会经常需要将数据库中的数据以excel的形式导出,在此我选用 node-xlsx 模块,用于导出一份固定格式的excel,然后用express中的res.download方法,为前端提供文件下载。
#语法糖为coffeeScript
fs = require("fs")
xlsx = require("node-xlsx")
uuid = require("node-uuid")
exports.exportFile = (req,res)-&
data = [[1,2,3],['a','b','c']]
buffer = xlsx.build([{name:'test',data:data}])
filePath = __dirname + '/download/' + uuid.v1() + '.xlsx'
#创建对应文件
fs.writeFileSync(filePath,buffer,'binary')
res.download(filePath)
如果只有少量文件可以不用将创建的文件删除(可以作为备份记录),如果文件量大且没有备份的意义,那么就需要在客户端下载完成后将对应的文件删除
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5003次
排名:千里之外
原创:19篇
(7)(12)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'}

我要回帖

更多关于 nodejs 下载功能 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信