2013-10-15 68 views
0

好傢伙我遇到在Redis的發佈/訂閱一個問題,因爲我的客戶不顯示我已經發表在Redis的-CLI消息在客戶端顯示發佈的消息。我使用在這裏找到的代碼在計算器中,我做了一些修改。 Here is the link and code.我希望你能幫助我,我的目標是發佈消息到客戶端的index.html使用Redis的在Redis的-CLI發佈。我之前完成了這個工作,但我無法再讓它工作。先謝謝你們。的Redis的Pub/Sub不使用Redis的-CLI

這裏是我的客戶的index.html

<html> 
<head> 
    <title>PubSub</title> 
    <script src="/socket.io/socket.io.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
    <!-- <script src="/javascripts/socket.js"></script> --> 
</head> 
<body> 
    <div id="content"></div> 
    <script> 
      var socket = io.connect('http://localhost:3000');  
      var content = $('#content'); 

      socket.on('connect', function() { 
      }); 

      socket.on('message', function (message){ 
       content.prepend(message + '<br />'); 
      }) ; 

      socket.on('disconnect', function() { 
       console.log('disconnected'); 
       content.html("<b>Disconnected!</b>"); 
      }); 

      socket.connect(); 
     }); 
    </script> 
</body> 
</html> 

這裏是我的server.js

var express = require('express'); 
var app = express(); 
var redis = require('redis'); 
var http = require('http'); 
var server = http.createServer(app); 
var socket = require('socket.io').listen(server); 
var publish = redis.createClient(); 

app.listen(3000); 
    console.log("Express server listening on port 3000") 

    app.get('/', function (req,res) { 
     res.sendfile(__dirname + '/public/index.html'); 
    }); 

socket.on('connection', function (client) { 
     var subscribe = redis.createClient(); 
     subscribe.subscribe('pubsub'); 

     subscribe.on("message", function (channel, message) { 
      publish.send(message); 
     }); 

     publish.on('message', function (msg) { 
     }); 

     publish.on('disconnect', function() { 
      subscribe.quit(); 
     }); 
    }); 

回答

1

的Redis不會爲你將數據發送到連接的客戶端。您必須指示Socket.IO發出數據:

subscribe.on("message", function (channel, message) { 
    socket.emit('message', message); 
}); 
+0

它仍然不起作用先生。 :( –

+0

您通過訂閱或發佈連接接收郵件嗎?請澄清。 – hexacyanide

+0

我receiveing throught的認購先生的消息,我的HTML客戶一點兒也不表現出來。有沒有在我的代碼的任何其他問題?謝謝你,先生。 –