2013-08-16 5 views
0

мой хозяин позволило порты 8000 до 8010Socket.io Redis ECONNREFUSED

var express = require('express') 
    , https = require('https') 
    , app = express() 
    , cluster = require('cluster') 
    , numCPUs = require('os').cpus().length 
    , RedisStore = require("socket.io/lib/stores/redis") 
    , redis = require("socket.io/node_modules/redis"); 
    , pub = redis.createClient(8002) 
    , sub = redis.createClient(8002) 
    , client = redis.createClient(8002); 
    , server = https.createServer(options,app); 
    , io = require('socket.io').listen(server); 
io.set('store',new RedisStore({redisPub:pub,redisSub:sub,redisClient:client})); 
if(cluster.isMaster){for(var i=0;i<numCPUs;i++){cluster.fork();}} 
else{ 
    console.log(numCPUs); 
    io.sockets.on('connection',function(socket){/*do stuff*/}); 
    server.listen(8002); 
} 

У меня реальные проблемы с пониманием, если я не могу подключиться к Redis из порта или кастрированный баран в Redis поставляется с розеткой. ИО включен ...

events.js:72 
    throw er; // Unhandled 'error' event 
     ^
Error: Redis connection to 127.0.0.1:8002 failed - connect ECONNREFUSED 
at RedisClient.on_error (/home/engine/public_html/node_modules/socket.io/node_modules/redis/index.js:149:24) 
at Socket.<anonymous> (/home/engine/public_html/node_modules/socket.io/node_modules/redis/index.js:83:14) 
at Socket.EventEmitter.emit (events.js:95:17) 
at net.js:426:14 
at process._tickCallback (node.js:415:13) 
[[email protected] ~]# info - socket.io started 

Кроме того, я не понимаю, как это может дать мне дополнительные рабочие (я console.log (numCPUs), и он говорит: 1, так что это значит у меня только 1 сотрудник ? Если это так, это означает, что нет никаких изменений в производительности, что делает эту попытку бессмысленной !?).

+0

Неясно на которых Redis порт на самом деле слушает? Вы пытаетесь подключиться к порту 8002, после чего ваш собственный сервер прослушивает тот же порт. Это не так. –

+0

Я также попытался подключить redis к 8003 и прослушать с моим приложением на 8002, но я получаю ту же ошибку –

+0

После более тщательного чтения вашего комментария, я думаю, вы думаете, что redis поставляется с socket.io. Это не так. Вам необходимо установить и запустить redis самостоятельно, во-первых, так же, как и любую другую базу данных. –

ответ

0

Вам нужно будет установить и запустить собственный экземпляр redis, а затем использовать клиент узла для подключения.

Посмотрите эту тему, чтобы получить дополнительную информацию, чтобы сделать то, что вы пытаетесь сделать.

Examples in using RedisStore in socket.io

Смежные вопросы