相关疑难解决方法(0)

Node.js + Nginx - 现在怎么办?

我在我的服务器上设置了Node.js和Nginx.现在我想使用它,但是,在我开始之前有2个问题:

  1. 他们应该如何一起工作?我该如何处理这些要求?
  2. Node.js服务器有2个概念,其中一个更好:

    一个.为需要它的每个网站创建单独的HTTP服务器.然后在程序开始时加载所有JavaScript代码,因此代码被解释一次.

    湾 创建一个处理所有Node.js请求的Node.js服务器.这将读取所请求的文件并篡改其内容.因此,每个请求都会解释文件,但服务器逻辑要简单得多.

我不清楚如何正确使用Node.js.

nginx concept node.js

964
推荐指数
10
解决办法
34万
查看次数

如何在socket.io中重用redis连接?

这是我的代码使用socket.io作为WebSocket和后端与pub/sub redis.

var io = io.listen(server),
    buffer = [];

var redis = require("redis");

var subscribe = redis.createClient();  **<--- open new connection overhead**

io.on('connection', function(client) {

    console.log(client.request.headers.cookie);

    subscribe.get("..", function (err, replies) {

    });

    subscribe.on("message",function(channel,message) {

        var msg = { message: [client.sessionId, message] };
        buffer.push(msg);
        if (buffer.length > 15) buffer.shift();
        client.send(msg);
    });

    client.on('message', function(message){
    });

    client.on('disconnect', function(){
        subscribe.quit();
    });
});
Run Code Online (Sandbox Code Playgroud)

每个新的io请求都将创建新的redis连接.如果有人用100个标签打开浏览器,那么redis客户端将打开100个连接.它看起来不太好看.

如果cookie相同,是否可以重用redis连接?因此,如果有人打开许多浏览器标签,也将其视为开放1连接.

redis node.js socket.io

40
推荐指数
1
解决办法
3万
查看次数

Node.js,多线程和Socket.io

我希望让Socket.io 在Node.js v.0.6.0及更高版本中使用本机负载平衡("集群")进行多线程.

据我所知,Socket.io使用Redis来存储其内部数据.我的理解是:我们不想为每个工作者生成一个新的Redis实例,而是强制工作者使用与主服务器相同的Redis实例.因此,连接数据将在所有工作人员之间共享.

在主人中有类似的东西:

RedisInstance = new io.RedisStore;
Run Code Online (Sandbox Code Playgroud)

我们必须以某种方式传递RedisInstance给工人并做以下事情:

io.set('store', RedisInstance);
Run Code Online (Sandbox Code Playgroud)

受到使用旧的第三方集群模块的此实现的启发,我有以下非工作实现:

var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  // Fork workers.
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }

  var sio = require('socket.io')
  , RedisStore = sio.RedisStore
  , io = sio.listen(8080, options);

  // Somehow pass this information to the workers
  io.set('store', new RedisStore);

} else {
  // Do the work …
Run Code Online (Sandbox Code Playgroud)

javascript node.js socket.io

10
推荐指数
1
解决办法
1万
查看次数

标签 统计

node.js ×3

socket.io ×2

concept ×1

javascript ×1

nginx ×1

redis ×1