Node.js 需要了解关于socket.io、redis和nginx的一些信息

Node.js 需要了解关于socket.io、redis和nginx的一些信息,node.js,nginx,socket.io,node-redis,socket.io-1.0,Node.js,Nginx,Socket.io,Node Redis,Socket.io 1.0,我的目标是构建一个聊天应用程序——类似于whatsapp 据我所知,socket.io是一个用javascript编写的实时通信库,使用起来非常简单 比如说 // Serverside io.on('connection', function(socket) { socket.on('chat', function(msg) { io.emit('chat', msg); }); }); // ClientSide (Us

我的目标是构建一个聊天应用程序——类似于whatsapp

据我所知,socket.io是一个用javascript编写的实时通信库,使用起来非常简单

比如说

 // Serverside
    io.on('connection', function(socket) {
        socket.on('chat', function(msg) {
            io.emit('chat', msg);
      });
    });

 // ClientSide (Using jquery)

   var socket = io();
  $('form').submit(function(){
    socket.emit('chat', $('#m').val());
    $('#m').val('');
    return false;
  });

  socket.on('chat', function(msg){
    $('#messages').append($('<li>').text(msg));
  });
因为我希望实时功能是只在特定路线上收听

2 Redis是一个处理发布/订阅的数据结构库,为什么我们需要使用发布/订阅机制? 我读了很多文章,但不能理解这个概念。文章示例

例如下面的代码

// Do i need redis for this, if so why? is it for caching purposes?
// Where does redis fit in this code?


 var redis = require("redis");
 var client = redis.createClient();


 io.on('connection', function(socket) {
     socket.on('chat', function(msg) {
          io.emit('chat', msg);
      }); 
  });
3只是想知道为什么我需要nginx来扩展node.js应用程序?我找到了这个答案:

它说了一些关于负载平衡的东西,在网上读到了,但也不能理解这个概念

到目前为止,我只处理node.js,mongoose simple CRUD应用程序,但如果你们能分享一些知识和有用的资源,我愿意非常努力地工作,这样我就可以加深对所有这些技术的了解

干杯

Q.插座开,无IO开

当您收到新连接时调用。Socket.on侦听客户端的所有发射。如果出于某种原因希望客户端充当服务器,那么简言之,需要yes io.on

Q.Redis发布/订阅与Socket.IO

看看这个,引用

如果所有客户都可以直接访问Redis,那么Redis pub/sub就非常棒了。如果您有多个节点服务器,一个可以将消息推送到其他节点服务器

但是,如果浏览器中也有客户机,则需要其他东西将数据从服务器推送到客户机,在这种情况下,socket.io非常好

现在,如果将socket.io与Redis store一起使用,socket.io将在引擎盖下使用Redis pub/sub在服务器之间传播消息,服务器将向客户端传播消息

因此,对您来说,使用socket.io房间和配置了Redis商店的socket.io可能是最简单的

如果需要,Redis可以充当消息队列。Redis是一个支持多种数据类型的数据存储

问:为什么Nginx使用Node.js

Node.js可以独立工作,但nginx更快地处理静态内容

由于nginx是一个反向代理,因此使用nginx配置服务器来处理所有静态数据,这些数据服务于静态文件、执行重定向、处理SSL证书和服务于错误页面。 其他每一个请求都会发送到node.js

也请查看此Quora帖子: 引述:

Nginx可用于从Node.js进程中移除一些负载,例如,服务静态文件、执行重定向、处理SSL证书和服务错误页面

没有Nginx,您可以做任何事情,但这意味着您必须自己编写代码,所以为什么不为此使用一个快速且经验证的解决方案呢

Q.插座开,无IO开

当您收到新连接时调用。Socket.on侦听客户端的所有发射。如果出于某种原因希望客户端充当服务器,那么简言之,需要yes io.on

Q.Redis发布/订阅与Socket.IO

看看这个,引用

如果所有客户都可以直接访问Redis,那么Redis pub/sub就非常棒了。如果您有多个节点服务器,一个可以将消息推送到其他节点服务器

但是,如果浏览器中也有客户机,则需要其他东西将数据从服务器推送到客户机,在这种情况下,socket.io非常好

现在,如果将socket.io与Redis store一起使用,socket.io将在引擎盖下使用Redis pub/sub在服务器之间传播消息,服务器将向客户端传播消息

因此,对您来说,使用socket.io房间和配置了Redis商店的socket.io可能是最简单的

如果需要,Redis可以充当消息队列。Redis是一个支持多种数据类型的数据存储

问:为什么Nginx使用Node.js

Node.js可以独立工作,但nginx更快地处理静态内容

由于nginx是一个反向代理,因此使用nginx配置服务器来处理所有静态数据,这些数据服务于静态文件、执行重定向、处理SSL证书和服务于错误页面。 其他每一个请求都会发送到node.js

也请查看此Quora帖子: 引述:

Nginx可用于从Node.js进程中移除一些负载,例如,服务静态文件、执行重定向、处理SSL证书和服务错误页面

没有Nginx,您可以做任何事情,但这意味着您必须自己编写代码,所以为什么不为此使用一个快速且经验证的解决方案呢


你有3个问题;将它们作为关于堆栈溢出的三个独立问题发布,这将帮助您获得answers@BasitAnwer我之所以在一个问题中问所有问题,是因为我每次都要等90分钟question@BasitAnwer如果你能帮我回答这个问题,那将是非常有帮助的回答;但请不要这样做。如果是
有人知道三个问题中有两个的答案,他/她可能在回答你的完整问题时犹豫不决,而且这违反了SO规则;将它们作为关于堆栈溢出的三个独立问题发布,这将帮助您获得answers@BasitAnwer我之所以在一个问题中问所有问题,是因为我每次都要等90分钟question@BasitAnwer如果你能帮我回答这个问题,那将是非常有帮助的回答;但请不要这样做。如果有人知道三个问题中的两个问题的答案,他/她可能会犹豫是否回答你的完整问题,再加上这违反了SO规则。
// Do i need redis for this, if so why? is it for caching purposes?
// Where does redis fit in this code?


 var redis = require("redis");
 var client = redis.createClient();


 io.on('connection', function(socket) {
     socket.on('chat', function(msg) {
          io.emit('chat', msg);
      }); 
  });
io.on("connection" ... )