草庐IT

django - Redis 到 Socket.IO

我正在使用Django制作一个实时网络应用程序。Django完成了所有繁重的工作。为了使应用程序实时,当在Django中进行更改时,它会发布到redis。然后我设置了一个node.js应用程序,将数据从redis编码到socket.io。所以现在事情看起来像这样。Django->Redis->Node.js->Socket.IO->浏览器我对使用redis没意见,认为它很棒。我调查了gevent-socketio但这不是我要找的。有没有办法:Django->Redis->Socket.IO->浏览器? 最佳答案 Redis和sock

multithreading - 为什么 redis+socket.io 的性能比 socket.io 更好?

我之前的所有代码都在socket.io+node.js服务器中。我最近将所有代码转换为redis+socket.io+socket.io+node.js,因为当太多用户通过服务器发送消息时,性能会降低。那么,为什么单独使用socket.io会很慢,因为它不是多线程的,所以它一次处理一个请求或发出。Redis所做的是分发这些请求或跨channel发出。客户端订阅不同的channel,当一条消息发布到一个channel时,所有订阅它的客户端都会收到这条消息。它通过这段代码实现:sub.on("message",function(channel,message){client.emit("m

node.js - 套接字 io 显示的重复消息

我正在使用redis进行通知,它是这样工作的-当user1有通知要分享给他的friend时,我将该消息发布到用户的每个friend的所有channel。使用socket.io和Node,消息被推送给每个friend,因为订阅部分是使用Node处理的。在连接丢失之前这一切正常。此时,在重新连接时,我发现friend的channel发生了2次发布,而不是1次发布,尽管像上一种情况一样只发生了1次事件..Istheiranyconfigusingwhichduplicatepublishcanbeavoidedonreconnect?还发现,在重新连接时,它也在尝试使用辅助传输进行连接。这会

node.js - 使用(socket.io + RedisStore)跨多个服务器进行通信

我正在使用Node.js和Socket.io开发一款多人在线游戏。我希望有很多玩家加入游戏,所以我将其托管在AmazonOpworks上。问题是服务器无法将套接字事件发送到连接到不同服务器的客户端。我正在使用RedisStore来管理socket.iosession。我相信RedisStore和socket.io以无缝的方式处理了这种服务器间通信。这是对另一个问题的引用:Howdoessocket.iosendmessagesacrossmultipleservers?但事实并非如此。如果消息位于不同的服务器上,则不会传递给其他客户端;如果只有一台服务器,该应用程序可以运行,但如果我使

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(

node.js - Socket.IO - Redis : SUBSCRIBE can't be processed. 连接已经关闭

我有一个简单的Redis-Socket.IO聊天应用程序,当用户按下F5或尝试刷新页面时,它会抛出以下(redis)异常:SUBSCRIBEcan'tbeprocessed.Theconnectionisalreadyclosed.当用户刷新页面时,套接字重新连接,我的子RedisClient对象抛出此异常。此事件轮到导致我的server.js也崩溃。当注释掉io.sockets.on连接中的所有sub和pub对象时,套接字重新连接,没有任何异常,server.js继续运行。我的server.jsvarsocket=require('socket.io');varexpress=req

django - 错误 : Cannot find module 'socket.io/node_modules/redis' on Mac

我正在尝试运行此示例(http://maxburstein.com/blog/realtime-django-using-nodejs-and-socketio/),但出现此错误:module.js:340throwerr;^Error:Cannotfindmodule'socket.io/node_modules/redis'atFunction.Module._resolveFilename(module.js:338:15)atFunction.Module._load(module.js:280:25)atModule.require(module.js:364:17)atre

javascript - Socket.io 和 Redis Pub/Sub 不工作

大家好,我想弄清楚我的代码中有什么错误,我的代码是关于socket.io和redispub/sub的,这是我第一次尝试这个,我希望你们能帮助我。这是我的index.htmlvarsocket=newio.Socket();socket.connect();socket.on('connection',function(socket){console.log('Connected');});socket.on('disconnect',function(socket){console.log('Disconnected');});TestPage这是我的app.jsvarredis=re

redis - 使用 socket.io-redis 的例子

大家好,感谢您的宝贵时间和帮助。我需要一个使用socket.io-redis的简单示例,请评论。我阅读了文档,但我不明白。谢谢, 最佳答案 socket.io-redis文档没有提到您实际上需要运行一个redis服务器,因此您可能已经忘记了这一点。socket.io-redis插件使用redis服务器的pub/sub客户端连接多个socket.io实例。从https://redis.io下载并安装一个redis服务器将redis插件添加到您的socket.io实例中:varexpress=require('express');var

javascript - 如何让不同的 Web 浏览器订阅 Redis/Node.js/Socket.io 发布/订阅设置中的单独 channel ?

我希望不同的客户端(网络浏览器)能够订阅单独的Redischannel。我能够将请求的channel从客户端页面传递到node.js服务器。但是,如果我有三个浏览器订阅,每个浏览器订阅三个独立的channel,所有三个浏览器都会收到发布到三个channel中的任何一个的消息。这是客户端HTML代码。我有三个单独的页面,channel名称硬编码到其中。在这个例子中,channel是“channel1”。client1.htmlvarsocket=io.connect('http://localhost');socket.on('giveChannel',function(){consol