我刚刚将socket.io更新到版本1.0.6,发现在socket.io/node_modules下不再有redis。
因此,我安装了socket.io-redis,因为这个线程表明这是正确的解决方案:
但是,在上一个版本中,我的app.js上曾经有以下代码:
var redis = require('socket.io/node_modules/redis');
var sub = redis.createClient();
使用这种新方法,运行节点redis会引发一个错误:它报告app.js没有createClient方法。
如何使用socket.io (1.0.6)和so
我正在使用socket.io实时发布文章,
流正在实时更新,但问题是,redis订阅多次发生,而post在流中多次出现。
我正在使用node.js cluster module创建多个节点集群。这是密码,
worker.js
var cluster = require('cluster');
var server = new Hapi.Server(config.port,view_options);
var socketIO = require('socket.io');
var redis = require("sock
我在这里度过了一段时间。我已经阅读了这么多文件,以及其他人关于同一主题的问题,但却找不到关于如何阻止这种情况发生的答案。我故意关闭redis服务器,以确保应用程序在生产过程中不会完全去核,但我做的任何事情似乎都阻止不了这种情况的发生。下面是一个非常简单的例子,说明我现在的代码是什么.
var cluster = require('cluster');
var express = require('express');
var http = require('http');
var redis = require('redis');
我有一个Rails实例和另一个Node.js实例。计划是使用Redis的pubsub发布来自Rails项目的信息,并通过Node.js程序进行订阅。node.js程序将通过web套接字(或长轮询)将信息发布给其他客户端。
当部署在远程linux机器上时,整个系统运行得很好。在Heroku上,Redis To Go被添加为Rails实例的附加组件。Redis可以从这个实例连接起来,并且工作得很好。
但是我不知道如何从Node.js实例访问这个Redis插件。我已经将Rails实例环境中的REDISTOGO_URL添加到Node.js环境中,但它不起作用。我得到的示例错误(来自日志和REPL)是
我正在使用node.js,express创建一个应用程序。今天,我尝试实现redis pubsub发送通知给追随者。
当用户登录时,我将检索他的好友_id的列表,并将这些_id订阅为通道名。当任何用户更新他的状态时,他们都会向他的频道发布通知。在我的头脑中,它应该没有任何问题的工作。
但是对于每个用户来说,redis客户端是相同的。因此,如果一个用户订阅了他的朋友_id,那么所有用户都会收到该频道上的消息通知。
我所做的
在我的app.js文件里-
...
// Because I wanted to publish from express route , so global
var red
我的socket.io版本是socket.io@0.8.7和redis@0.7.1。我使用的是Windows。
在某些地方,我看到这个问题已经解决了。我想我使用的是最新的socket.io版本。什么是emitter.setMaxListeners()?我可以在哪里设置它?
(node) warning: possible EventEmitter memory leak detected. 11 listeners added.
Use emitter.setMaxListeners() to increase limit.
Trace:
at RedisClient.<anon
扩展socket.io应用程序的方法是什么?我看到以下问题,我不明白如何解决:
一个可缩放的socket.io应用程序如何向房间广播?换句话说,socket.io如何知道来自其他服务器的邻居?
我很难想象它应该如何工作--也许一个共享的变体存储存储所有必要的信息,比如redis --这是一种可能性吗?
编辑:我找到了这篇文章:
在此基础上,我做了以下工作:
var pub = redis.createClient();
var sub = redis.createClient();
var store = redis.createClient();
pu
我正在尝试通过redis与Django和Node.js通信,但是当我尝试在redis中获取on('message')事件时,我得到了两次事件……
我有这个:
io.sockets.on('connection', function (socket) {
//Subscribe to chat channel
sub.subscribe('chat');
//Get the event 'message' from Django
sub.on('message', function(channel, messag
这是我第一次使用nodejs,我对它有一些问题。主要问题是用户从服务器接收的信号超过一个。计数基于页面的刷新。下面是我的代码:
var http = require('http');
var server = http.createServer().listen(1332);
var io = require('socket.io').listen(server);
var redis = require('redis');
var sub = redis.createClient();
//Subscribe to the Redis cha
我已经在 by 选项中设置了Redis集群。现在,我想使用'ioredis‘从我的节点js代码连接到这个redis服务器,这里是我的代码,用于连接到redis的单个实例。
var Redis = require("ioredis");
var store = new Redis(6379, 'redis-ob0g');//to store the keys
var pub = new Redis(6379, 'redis-ob0g');//to publish a message to all workers
var sub =
我编写了以下程序(redis.pl),Redis是使用默认端口设置在本地运行的,但是当我使用morbo redis.pl运行redis.pl时,屏幕上就没有********* 1。为什么会这样呢?订阅似乎从未发生过。我怎么才能解决这个问题?
#!/usr/bin/perl
use v5.18;
use warnings;
use Mojolicious::Lite;
use Mojo::Redis2;
say "Welcome";
my $redis = Mojo::Redis2->new();
$redis->subscribe(['pubsub
我的印象是,利用这个图书馆:
可以做这样的事情:
var redis = require('redis');
var pub = redis.createClient();
var sub = redis.createClient();
sub.psubscribe('channel');
sub.on('message from channel', function(){});
pub.publish('channel','a message xyz');
问题是,我似乎无法让sub.on()接收特定的
我很难让节点js识别除"message“之外的任何其他信道。通道名称"message“是可识别的,但是当我将通道名称更改为任何其他名称时,节点不会订阅并响应通道名称。
示例:
var sub = redis.createClient();
sub.subscribe('message');
sub.on('message', function (channel, data) {
data = JSON.parse(data);
console.log('chat', channel, data);
});
/
这段代码似乎不起作用,我不知道如何调试它。我正在使用send通过websocket发送订阅消息。
use Mojo::Redis;
#Controller
sub data_stream {
my $c = shift;
$c->inactivity_timeout(300);
my $redis = Mojo::Redis-new('redis://xxxxxxxx@localhost:6379/');
my $pubsub = $redis->pubsub;
my $cb = $pubsub->listen(
以此示例代码为例:
//Redis Variables
var redis = require('socket.io/node_modules/redis');
var RedisStore = require('socket.io/lib/stores/redis');
var pub = redis.createClient();
var sub = redis.createClient();
var client = redis.createClient();
var redis_store = new RedisStore({
我们使用套接字i/o来处理大量的实时数据。用户使用套接字发送/接收数据。因为我们使用的是负载均衡器,所以我们不能使用套接字I/O的命名空间模型,而是在套接字中使用redis的pub/sub。
到目前为止,我们为每个用户每个通道的订阅创建了一个单独的redis连接。但最近我们遇到了一个问题,那就是redis上的最大连接数(Error: Ready check failed: ERR max number of clients reached),我们发现这是因为通过pub sub有太多的redis连接。
为了应对这种情况,我突然想到,与其为每个用户使用多个订阅redis连接,为什么不使用一个发布r
场景
使用node_redis构建一个简单的Redis订阅(chat)示例: (与Hapi.js和Socket.io)
我们已经在我们的项目中创建了一个节点模块redis_connection.js (参见: )来实例化Redis连接,因为我们不想重复(与RedisCloud)多次连接的代码:
var redis = require('redis');
var url = require('url');
var redisURL = url.parse(process.env.REDISCLOUD_URL);
var redisClient = red
我目前在node.js和socket.io中有一个聊天应用程序(一对一)。随着我网站的用户越来越多,我想在我的聊天应用中引入redis。下面是我当前应用程序的一个小例子:
// all requires and connections
io.sockets.on('connection', function(socket) {
socket.on('message', function(msg) {
// code to get receiverssocket
io.sockets.sockets[receiverssocket].emit('mes