草庐IT

nodejs-demo

全部标签

node.js - 在 nodejs 中跟踪哪些用户在线的最佳方法是什么?

所以我正在用node.js开发(更多地玩)一个实时游戏,我也在使用Redis和Sockets.io。我让玩家创建一个大厅并加入它(有点像赛前聊天室,您可以在其中与玩家交谈并选择游戏设置)。客户端是用HTML/CSS/JS编写的,无论如何我希望能够知道玩家何时从大厅断开连接,以更新界面上加入的玩家数量(以及加入的玩家名称)。我考虑过的两个选项是:使用redis的键值超时功能,如果特定字段在x时间内未更新,则删除该字段。然后我会让主机检查此字段是否存在以检查DC。我想知道这是否非常低效,因为很多用户可能会玩,所以在redis中有很多超时值以及许多其他用户轮询这些字段是否不好。我可以使用so

database - Redis 存储(或任何数据库?)锁定机制 (NodeJS)

我遇到以下问题:我正在使用Redis与NodeJS一起通过mranney'sdriver我的NodeJS网络服务器正在从Redis检索一些数据,对其进行一些操作并将其保存回Redis。但是此操作(称为X)可能需要一段时间,因此多个用户可以同时在相同资源上触发它。因此,如果用户A触发X,而用户B同时触发X,我希望用户A完成工作,然后用户B获取(已处理的)数据并执行X。同时,用户B等待。用户的顺序无关紧要-一次只有一个。那么如何在我的场景中实现这一点呢?如何锁定/解锁Redis?有可能吗? 最佳答案 有几种方法可以在Redis中实现锁定

node.js - nodejs Kue 的条件尝试

我正在使用kue在一个网络爬虫应用程序中。如果错误符合特定条件,我想为某些失败的作业设置attempts。例如,如果错误是由套接字挂起引起的,则作业将以1分钟的间隔重试3次。我的代码如下所示,但不起作用varkue=require('kue');varqueue=kue.createQueue();queue.process('grab',function(job,done){//doCrawlingJobisasynccallandreturnspromisedoCrawlingJob(job).then(function(result){done();}.catch(functio

node.js - nodejs转redis ECONNRESET错误

对于Node.js到Redis的连接,我们使用的是Redisnpm模块。偶尔,我们会收到以下错误,message:readECONNRESET,stack:Error:readECONNRESETatexports._errnoException(util.js:1020:11)atTCP.onread(net.js:568:26)Redis设置是,Intranet中的一个redis服务器和2个Nodejs服务器,每个8个PM2实例在DMZ中运行。Node服务器和Redis服务器之间有一个防火墙。NODEversion-6.11.2REDISversion-3.2.9PM2versio

node.js - Docker-Compose:无法将 NodeJS 与 Mongodb 和 Redis 连接 [连接被拒绝]

我正在使用3个服务:api-knotain[主要api服务]api-mongo[用于api服务的mongo数据库]api-redis[用于api服务的redis]api-knotain的Dockerfile如下所示FROMnode:latest#CreateappdirectoryWORKDIR/usr/src/app#Installappdependencies#Awildcardisusedtoensurebothpackage.jsonANDpackage-lock.jsonarecopied#whereavailable(npm@5+)COPYpackage*.json./RU

node.js - 如何在 Redis NodeJS 上订阅多个 channel

我有一个我会不时调用的函数。functionblah(){sub.unsubscribe();sub.subscribe("a");sub.subscribe("b");}以上结果导致错误消息“错误:node_redis命令队列状态错误。” 最佳答案 与https://github.com/mranney/node_redis/issues/137相同 关于node.js-如何在RedisNodeJS上订阅多个channel,我们在StackOverflow上找到一个类似的问题:

node.js - 使用nodejs redis时出现EMFILE错误

我想测试我的redis服务器可以保持多少个连接,所以我在循环中调用redis.createClient(),当redis服务器仍然活跃时,我得到了EMFILE错误,我知道我已经用完了fds。等等,我之前刚刚测试过我的mqtt服务器,我对我的mqtt服务器做了同样的事情,我在10000次、20000次循环中调用了mqtt.createClient()...但我从未遇到EMFILE错误。那么,nodejsmqtt库是否在底层使用了不同的机制?redis-client.js:varredis=require('redis');functionstart(){varclient=redis.c

node.js - NodeJS Socket.io Server<-->服务器通信

我正在尝试使用socket.io在NodeJS(集群架构,独立虚拟机)中建立服务器到服务器的通信。我尝试使用此处发布的内容http://socket.io/docs/using-multiple-nodes/vario=require('socket.io')(3000);varredis=require('socket.io-redis');io.adapter(redis({host:'localhost',port:6379}));所以我假设(可能是错误的)在执行io.emit("message","someexamplemessage")时我可以通过以下方式收听它:io.on(

php - 在 PHP +Redis +Pub/Sub +WebSockets (+NodeJS) 中实时聊天

我想开发与channel的实时聊天,这些是我的需求:PHPbackendtomanagesiteRedisassessionanddataprimarystoragePub/Subtosendmessagesonlytochannel'sinterestedusersoneWebSocketconnectionwithwhichthemessageswillbesendandreceived.(optional)NodeJStousegreatnpmpackagesliketimesyncorsocket.io我看到了两种不同的架构来实现这一点:使用Socket.io使用Crossba

node.js - Docker如何在容器中使用redis启动nodejs应用程序?

我有一个简单但好奇的问题,我的图像基于nodejs图像,并且我已经在图像上安装了redis,现在我想在执行docker-composeup时启动在容器中运行的redis和nodejs应用程序。但是我只能让一个工作,Node总是给我一个错误。有没有人有任何想法如何在docker-composeup上启动nodejs应用程序?如何在同一个镜像/容器中启动后台运行的redis?我的Docker文件如下。#SetthebaseimagetonodeFROMnode:0.12.13#UpdatetherepositoryandinstallRedisServerRUNapt-getupdate&