相关疑难解决方法(0)

如何在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万
查看次数

在socket.io中使用RedisStore的示例

我试图跨多个进程和/或服务器扩展一个简单的socket.io应用程序.

Socket.io支持RedisStore,但我对如何使用它感到困惑.

我正在看这个例子, http://www.ranu.com.ar/post/50418940422/redisstore-and-rooms-with-socket-io

但我不明白在该代码中使用RedisStore与使用MemoryStore有何不同.有人可以向我解释一下吗?

另外,配置socket.io以使用redisstore与创建自己的redis客户端以及设置/获取自己的数据有什么区别?

我是node.js,socket.io和redis的新手,所以请指出我是否错过了一些明显的东西.

redis node.js socket.io

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

如何为即时通讯系统设计redis pub/sub?

我是redis pub/sub的新手.我在系统中有一个聊天工具,就像IM一样.所以我想使用redis pub/sub.正如我检查过的样本,大多数是基于聊天室设计的.在我的系统中,我将在用户之间设置多个聊天室;

A:B
A:C
D:C
E:F
Run Code Online (Sandbox Code Playgroud)

所以,上面的线是房间.我用node.js实现了服务器,如下所示;

var store = redis.createClient();
var pub = redis.createClient();
io.sockets.on('connection', function (socket) {
    var sub = redis.createClient();

    sub.on("message", function(pattern, data){
            data = JSON.parse(data);
        socket.send(JSON.stringify({ type: "chat", key: pattern, nick: data.nickname, message: data.text }))
        }
    });

    socket.on('message', function (messageData) {
        store.incr("messageNextId", function(e, messageId) {
        var room = ""
        var from = messageData.clientId > socket.nickname ? socket.nickname : messageData.clientId;
        var to = messageData.clientId < socket.nickname ? socket.nickname : messageData.clientId;   
            room = from + ":" + …
Run Code Online (Sandbox Code Playgroud)

publish-subscribe redis node.js

14
推荐指数
1
解决办法
9946
查看次数

用于node.js中聊天服务器的Redis pub/sub

我正在尝试使用Redis Cookbook示例:

var http = require('http'),
io = require('socket.io')
fs = require('fs'),
redis = require('redis'),
rc = redis.createClient(9189, "pike.redistogo.com");
rc.auth("passwd", function() {
    console.log("Connected! to redistogo!");});

rc.on("connect", function() {
    rc.subscribe("chat");
    console.log("rc connect event");
});
Run Code Online (Sandbox Code Playgroud)

我在这里取得了成功但从未得到"消息".

rc.on("message", function (channel, message) {
 console.log("Sending: " + message);
 socketio.sockets.emit('message', message);
});

webpage = http.createServer(function(req, res){
console.log('webpage request starting...');

fs.readFile('./index.htm', function(error, content) {
    if (error) {
        res.writeHead(500);
        res.end();
    }
    else {
        res.writeHead(200, { 'Content-Type': 'text/html' });
        res.end(content, 'utf-8');
     }
 });
 });

 webpage.listen(7777);
Run Code Online (Sandbox Code Playgroud)

我的客户端index.htm就是这个

<!docttype html>
<html …
Run Code Online (Sandbox Code Playgroud)

redis node.js socket.io

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

Node.js多服务器集群:如何在多个节点集群中共享对象

我想为聊天室应用程序创建一个node.js服务器集群,以支持高并发性.我需要能够在所有节点之间共享信息.我试图找出保持所有服务器同步的最佳方法.我希望共享对象具有尽可能多的灵活性,因为我计划在将来添加更多功能.

到目前为止,我有两个解决方案:

  1. 订阅NoSQL密钥(例如redis发布 - 订阅)
  2. 节点使用套接字相互更新.

哪个更好?还有其他想法吗?

cluster-computing redis node.js socket.io

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