0

私のホストはポート 8000 から 8010 を許可しています

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 に接続できないのか、socket.io で提供されている 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)
[root@vps ~]#    info  - socket.io started

また、これにより追加のワーカーがどのように得られるのかわかりません (console.log(numCPUs) と表示され、1 と表示されます。つまり、ワーカーが 1 つしかないということですか?そうであれば、パフォーマンスに変化がないことを意味します。この努力が無意味に!?)

4

1 に答える 1

0

独自の redis インスタンスをインストールして実行し、ノード クライアントを使用して接続する必要があります。

あなたがやろうとしていることを行うための詳細については、このスレッドを参照してください。

socket.io での RedisStore の使用例

于 2013-12-17T12:13:58.003 に答える